"오브젝트: 코드로 이해하는 객체지향 설계" 책의 기록입니다.
협력
- 협력이란, 어떤 객체가 다른 객체에게 무엇인가를 요청하는 것
메시지 전송
: 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단- 메시지를 수신한 객체는 메서드를 실행해 요청에 응답
- 객체가 메시지를 처리할 방법을 스스로 선택! → 자신의 일을 스스로 처리하는 자율적인 존재
- 객체를 자율적으로 만드는 기본적인 방법은 내부 구현을
캡슐화
하는 것
협력이 설계를 위한 문맥을 결정
- 객체의
행동
을 결정하는 것은 객체가 참여하고 있는협력
- 객체의
상태
를 결정하는 것은행동
- 결론적으로, 협력이 객체를 구성하는 행동과 상태를 모두 결정 → 객체 설계에 필요한
문맥
을 제공
책임
- 협력에 참여하기 위해 객체가 수행하는 행동
무엇을 알고 있는가(knowing)
과무엇을 할 수 있는가(doing)
으로 세분화- 객체지향 설계에서 가장 중요한 것은 책임
책임 할당
- 책임을 수행하는 데 필요한 정보를 가장 잘 알고 있는 전문가에게 책임을 할당하기 : Information Expert Pattern
책임 주도 설계
- Responsibility-Driven Design, RDD
- 시스템 책임을 파악 → 더 작은 책임으로 분할 → 적절한 객체, 역할을 찾아 책임을 할당
- 책임을 수행하는 도중 다른 객체의 도움이 필요할 경우 마찬가지로 찾아 할당 → 두 객체가 협력하게 됨
- 책임을 할당할 때 고려해야 하는 두 가지 요소
- 메시지가 객체를 결정한다.
- 행동이 상태를 결정한다.
역할
- 객체가 어떤 특정한 협력 안에서 수행하는 책임의 집합
- 유연하고 재사용 가능한 협력을 얻을 수 있기 때문에 중요
- 역할은 다른 것으로 교체할 수 있는 책임의 집합
- 역할을 구현하는 가장 일반적인 방법은
추상화 클래스
와인터페이스
- 연극 안에서 배역을 연기하는 배우 ↔︎ 협력 안에서 역할을 수행하는 객체
'Books' 카테고리의 다른 글
[오브젝트] 객체지향 프로그래밍 (0) | 2022.05.09 |
---|