현재 기억에 남는 부분들을 간단하게 적어보기로...
1. 객체는 협력하기 위해 존재한다.
- 서로 협력하기위해 각각의 객체들마다 고유의 책임을 가지고있고 협력하기위해 메서드를 가진다.
2. 객체를 만들때 상태 중심이 아닌 객체의 행동을 중심으로 결정하자.
- 객체의 행동은 협력에 참여하기위한 유일한 방법.
- 상태 중심의 객체는 캡슐화에 저하 -> 메서드를 통한 데이터 변경이 아닌 필드값을 직접 조작해 변경을 할 확률이 큼.
3. 추상화란?
- 단순화를 통해 복잡성 극복
- 목적에 맞게 코드를 단순화
- 공통점을 취하고 차이점을 버리자.
- 불필요한 세부사항을 버리자.
4. 객체는 그 객체만의 책임이 존재해야한다.
- 서로 다른 책임을 가지고 있는 객체들의 협력 -> 객체지향 프로그래밍
5. 분류
- Class 란 서로 다른 책임을 가지고있는 객체들의 Classification (분류) 방법
6. 메시지와 메서드
- 메서드를 추상화 한뒤 다형성을 이용해 구현을 하자.
- 위처럼 추상화와 다형성을 이용해 유연하고 재사용성이 높은 소프트웨어를 설계하자.