#객사오
4장
- 객체 지향 설계의 품질은 협력의 품질
- 협력
- 요청과 응답으로 이뤄지는 네트워크
- 책임
- 요청에 응답할 수 있거나, 적절한 행동을 할 의무가 있는 경우 책임을 가지는 것
- 하는것
- 객체를 생성하거나 계산을 하는 등 스스로 하는 것
- 다른 객체의 행동을 시작시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
- 아는 것
- 개인적인 정보를 아는 것
- 관련된 객체를 아는 것
- 자신이 유도하거나 계산할 수 있는 것에 대해 아는 것
- 책임은 객체의 공용 인터페이스를 구성함
- 요청은 메세지 전송을 통해 이루어짐
- 역할
- 책임의 집합
- 협력을 추상화 할 수 있음
- 역할은 협력내에서 역할을 수행할 수 있는 다른 객체로 대체될 수 있음
- 프로그래밍 내에서 타입과 역할은 일반화(역할)/특수화(타입) 관계가 보통 성립
올바른 객체의 설계
1. 견고하고 깔끔한 협력을 설계(요청과 응답의 흐릅을 결정)
2. 요청과 응답의 흐름은 수행될 책임임, 적절한 객체에게 책임을 할당
3. 책임(객체가 외부에 제공하게될 행동이 됨)을 수행하는데 필요한 데이터를 결정
4. 클래스의 구현 방법 결정
설계 기법
- 책임 주도 설계
- 시스템이 제공할 책임을 파악
- 책임을 더 작은 단위의 책임으로 분할
- 적절한 객체를 찾아 할당, 다른 객체의 도움이 필요하면 또다른 적절한 객체나 역할을 찾음
- 또다른 객체나 역할에게 책임을 할당(두 객체의 협력)
- 디자인 패턴
- 정형화된 과거의 설계 경험
- 반복적인 문제, 문제의 해법으로 정의됨
- 공통적으로 사용될 수 있는 역할, 책임, 협력의 템플릿 -> 시스템을 빠르게 설계 할 수 있음
- 테스트 주도 개발
- 책임 주도 설계의 개념을 따름
- 객체나 역할이 메시지를 수신할 때 어떤 결과를 반환하고 그 속에서 어떤 객체와 협력할지를 기대하고 작성하는 것(책임을 수행할 기대를 코딩)