-
Notifications
You must be signed in to change notification settings - Fork 27
[최유성] 객체지향의 사실과 오해 2단원
choiyusung edited this page Oct 12, 2019
·
1 revision
-
세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 낮출 수 있다.
-
객체는 상태,행동,식별자를 지닌 실체
- 상태란 행동의 결과를 예상하기 위해 과거의 행적을 다 외워야 한다는 어려운 점을 해결하기 위해 고안되었다. 행동의 과정과 결과를 단순하게 기술
- 상태를 표현하는 모든 특징은 프로퍼티, 프로퍼티는 정적, 프로퍼티 값은 동적이다. (프로퍼티는 속성 단순값, 연관관계 두가지 종류로 구분)
- 객체와 객체의 사이의 의미있는 연결을 링크라 한다. (엘리스 객체가 가지고 있는 음료 객체 여기서 음료는 값이 아닌 객체이다.)
- 객체지향의 기본 사상은 상태와 상태를 조작하기 위한 행동을 하나의 단위로 묶는것이다.
3.Side effect (어떤 행동을 통해 객체의 상태를 변경시킨다.)
4.상태와 행동은 서로 의존적이다. 행동은 상태에 영향을 주고, 상태는 행동에 영향을 준다.
5.자신에게 주어진 책임을 완수하기 위해 다른 객체를 이용하고 다른 객체에게 서비스를 제공한다.
- 객체 자신의 상태변경
- 행동 내에서 협력하는 다른 객체에 대한 메시지 전송
-
객체지향 세계와 현실세계가 가장 다른점은 객체의 의인화이다. ** 자신의 상태를 스스로 관리하는 자율적인 존재, 예를들어 음료가 자신의 양을 줄이는 것은 음료 자신이어야 한다.**
-
메시지 송신자는 수신자의 상태변화에 대해 알지 못한다. - 캡슐화
- 상태를 잘 정의된 행동 집합 뒤로 캡슐화하는 것은 객체의 자율성을 높이고 협력을 단순하고 유연하게 만든다.
- 캡슐화되지 않은 채 다른 객체가 서로의 상태 변화에 대해 알고 관여한다면 객체간의 협력이 복잡해지고 파악하기 어려워진다.
-
값과 객체의 가장 큰 차이점은 식별자의 유무다.
- 참조객체,엔티티는 식별자를 지닌 전통적인 의미
- VO는 식별자를 가지지 않는 (MONEY 같은 것)
-
객체는 상태를 가지며 상태는 변경 가능, 객테의 상태를 변경시키는 것은 개게의 행동, 객체는 어떤 상태에 있더라도 유일하게 식별 가능
-
상태를 먼저 결정하고 행동을 나중에 결정하는 방법은 나쁜 설계이다.
- 상태를 먼저 결정할 경우 캡슐화가 저해 -> 상태에 초점을 맞출경우 공용 인터페이스에 상태가 노출될 수있다.
- 객체의 행동에 집중하여 설계할 시 문맥이 더 명확해진다.