- 객체란(Object)?
- 눈으로 보여지는 것, 손으로 만져지는 것, 머릿속으로 상상되는 모든 것
- 현실세계는 객체들의 합으로 구성
- 클래스 vs 객체
- 클래스는 사물을 분류해서 공통적인것을 뽑아낸 것
- 사람 클래스 (직립 보행 + 말을 한다 -> 사람)
- 펭귄 클래스 (연미복, 짧은 다리, 날지 못하는 새)
- 별 클래스 (밤하늘에 반짝이는 것)
- 클래스는 속성들 + 행위들
- 객체
- 클래스들의 구체적인 값과 행위들
- 서동성, 서동진, 서하나 라는 각각의 객체
- 객체들은 속성 + 행위
- 속성 : 나이, 몸무게, 키 등의 필드 값
- 행위 : 자다, 먹다 등의 메소드
- 각각의 객체는 고유하다
- 클래스는 사물을 분류해서 공통적인것을 뽑아낸 것
-
클래스와 객체 구분
- 개념 -> 클래스
- 실체 -> 객체
- 클래스와 객체를 구분하는 간단한 방법은 나이를 물어보는 것 (대답이 가능 -> 객체, 불가능-> 클래스)
- 사람의 나이는 몇살인가? - 클래스
- 서동성의 나이는 ? - 객체
- 펭귄의 나이는? - 클래스
- 뽀로로의 나이는? - 객체
-
객체 지향의 4대 특성 (캡상추다)
- 객체 지향의 4대 특성은 클래스를 통해 구현
- 캡슐화 : 정보은닉
- 상속 : 재사용
- 추상화 : 모델링
- 다형성 : 사용편의
-
객체 지향의 특징 : 추상화 (모델링)
-
추상화는 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용
- 클래스 : 분류, 집합 같은 속성과 기능을 가진 객체를 총칭하는 개념 (추상화)
- 객체 : 세상에 존재하는 유일무이한 사물 (클래스의 인스턴스)
-
유일무이한 객체들 특성(속성 + 기능)에 따라 분류하면 클래스가 나오게 됨
- 따라서 실제 존재하는 객체들을 먼저 나열해보고 클래스 별로 분류해본다!
- 클래스가 정해졌으면 클래스부터 설게한다.
-
클래스 만드는 방법
-
사람이라는 클래스가 있다고 가정
- 필드 : 시력, 몸무게, 혈액형, 키, 나이, 직업, 연봉 ...
- 메소드 : 먹다(), 자다(), 일하다(), 운전하다(), 입금/출금하다(), 이체하다(), 운동하다()...
-> 무한정 많음
- 따라서 애플리케이션 경계 (Context)를 긋는다
- 방법 : 내가 만들고자 하는 애플리케이션은 어디에서 사용될 것인가?
-
병원 애플리케이션을 만든다면?
- 여기에서 사람이란? 환자 (클래스)
- 필요한 필드 : 시력, 몸무게, 혈액형, 키, 나이 만 필요하면 됨
- 필요한 메소드 : 먹다(), 자다(), 운동하다()만 필요
-
은행 애플리케이션을 만든다면?
- 여기에서 사람이란? 고객 (클래스)
- 필요한 필드 : 나이, 직업, 연봉
- 필요한 메소드 : 이체하다(), 입금/출금하다()
-
따라서 추상화(클래스)를 만드는 방법은 모델링이다
- 모델링이란 관심있는 특성만을 추출해서 표현하는 것
- 실제 사물을 단순하게 묘사하는 것
- 필요한 것만 뽑아내는 것
- 클래스를 설계할때 or DB 테이블을 설계할때 필요한 기법
-
-
