예) 총 게임의 객체 : 게임 캐릭터 객체, 총 객체, 총알 객체
객체들은 서로 어떻게 소통하는가 ? 게임 캐릭터 객체가 총 객체에 발사를 전달 -> 총이 총알을 발사 -> 총알은 맞은 캐릭터에서 공격력을 -50하라고 전달
결과적으로
(사진출처 : 코드잇 강의)
클래스(Class)는 객체를 만들어내는 틀이다.
class User: #클래스명 - 첫시작은 대문자
pass
user1 = User() #위에서 정의한 유저 class를 이용해 유저instance(객체)를 생성
user2 = User()
user3 = User() #user1,2,3은 같은 클래스로 만들었지만 서로 다른 객체이다.
#속성 : 인스턴스 이름.속성명 = 속성에 넣을 값
user1.name = "이주연" #인스턴스 변수 = 값
user1.email = "a@abc.com"
user1.password = "213124"
user2.name = "김영훈"
user2.email = "b@abc.com"
user2.password = "235752
user3.name = "이재현"
user3.email = "c@abc.com"
user3.password = "324253"
#
객체 제한 프로그래밍은 지금까지 보셨던 프로그래밍 방식하고는 다른 방식으로 프로그램 하는 것임
언어의 개념이 아니라 그냥 프로그램을 만드는 방식이라고 생각하면 됨
언어마다 객체 제한 방식을 지원하는 게 있고 절차 지향적인 방식을 지원하는 게 있음
01:19
절차 지향적 프로그램
프로그램을 짤 때 순서대로 작성을 해야 원하는 결과가 나옴
절차 지향적인 방식의 프로그램은 필요한 변수들을 만들어 놓고 처리하는 것보다 짜지는 것임
절차 제한적으로 프로그램을 짠다는 것은 필요한 변수들을 만들어 놓고 처리하는 것보다 짜지는 것임
05:51
프로그램의 변수와 함수
프로그램을 만들게 되면 변수와 함수를 이용해서 절차를 만들어 나가야 함
프로그램의 규모가 커질수록 함수와 변수가 많아짐
함수와 변수가 많아지면 관리하기가 힘들어짐
09:36
프로그램의 유지보수
프로그램을 만들고 나서 발생하는 문제들을 보통은 처음에 해결을 하고 어느 정도 안정화가 되면 그다음부터는 계속 기능적인 것들을 수정하거나 업그레이드를 해주는 것을 유지보수라고 함
프로그램의 규모가 커지니까 관리가 힘들어져서 새로운 프로그래밍 방식을 생각해 볼 필요가 생김
객체 지향 프로그램 방식은 함수나 변수를 서로 연관성 있는 변수하고 함수들끼리를 묶어서 따로따로 개발하는 것임
14:26
객체 지향의 기본 컨셉
객체 지향의 기본 컨셉은 관리가 안 되니까 분류하기 시작함
프로그램을 만들 때도 관리가 안 되니까 분류를 해서 개발함
서로 연관성 있는 함수와 변수들끼리 묶어서 개발함
19:11
객체 제한적으로 만드는 방법
여러 군데서 사용하는 값들을 변수로 만들고 함수를 만들라는 건 완전히 재사용성에만 목적을 둔 것임
객체 제한적으로 만들겠다는 건 고객과 관련된 함수들을 고객이라고 묶어놓고 게시판과 관련된 것들을 게시판이라고 하는 거와 관련된 것들은 또 그렇게 묶어버리는 것임
21:14
객체 지향 프로그래밍
쇼핑몰에 필요한 여러 개의 변수들과 여러 개의 기능들을 역할에 따라서 분리를 해서 독립적인 프로그램처럼 만들자라는 게 객체 지향 프로그래밍임
객체 지향 프로그래밍은 프로그램을 구성하는 변수들과 함수들 중에서 서로 연관성 있는 끼리 묶어서 모듈화해가지고 개발하는 방식임
25:17
파이썬의 객체 지향 방식
파이썬은 객체 제한 프로그램이고 절차 제한적인 방식도 지원을 하고 함수 제한 방식도 지원을 함
객체 지향 방식을 지원하는 언어는 파이썬임
객체 지향 방식은 모듈화하는 것이고 모듈을 구성하는 변수와 함수가 들어감
객체의 함수를 메소드라고 함
28:58
객체 지향 프로그램
객체 지향 프로그램에 대해서는 객체라는 거를 만들려고 하는 것임
객체는 실제 변수와 메서드를 가지고 있으면서 일하는 애라고 생각하면 됨
객체의 속성은 객체의 속성 값과 객체의 상태가 값이라는 게 결국은 속성 내지는 상태라고 생각하는 것임
30:14
스테이트 속성
스테이트 속성은 어떤 사람의 나이 상태이자 속성이 데이터가 값이 되는 것임
객체가 가지고 있는 동작이 기능을 우리는 메소드라고 얘기하고 오퍼레이터라고도 얘기함
용어적으로는 속성이라고 얘기를 하고 객체 지향에서의 개념적으로 얘기할 때 쓰는 용어임
프로그램 쪽으로 얘기할 때는 얘를 메서드라고 얘기하고 오브젝트 함수라고도 얘기함
노트북의 개념
노트북이라고 하는 거는 우리가 쓰는 얘네들 중에서 서로 같은 애들끼리 묶어놓은 게 노트북이라고 보시면 됨
노트북이라고 하는 게 뭐가 되는 거냐면 클래스가 되는 거임
클래스라고 하는 거는 우리가 찾아야 우리가 사용해야 될 인스턴스의 타입이 되는 애들이라고 보시면 됨
클래스의 정의
노트북을 만들 때는 설계도를 만들어 놓고 클래스를 정의한 다음에 필요할 때마다 객체를 만들어서 쓰게 됨
클래스는 객체들이 가지게 될 속성은 뭐가 있고 즉 변수는 뭐가 있고 메서드는 뭐가 있는지를 정의하는 것임
메소드는 객체의 기능
함수와의 차이 ? 메소드는 type의 class의 기능으로 포함되어있는 것. 함수는 범용적으로 다양하게 사용할 수 있음
class는 어떤 기능을 가져야하는지에 대한 설계도
class 클래스 이름 : 형태로 선언
객체에 속성을 추가 = 객체에 변수를 추가한다는 것 클래스에 넣는 것
Class 생성 - initializer 에서 값 초기화 후 생성
-객체 생성
생성한 클래스에 속성에 맞는 값을 적는다.