최후통첩 실험 에피소드로 4장이 시작된다.
인간은 이기적이면서도 합리적인가에 대한 가설에 대한 실험.
하지만 인간은 단순한 계산만으로 움직이지 않고 놓여진 상황, 문맥에 맞게 행동한다.
이 문맥은 타인과의 협력을 맺는 과정.
돌고돌아 협력의 중요성을 강조한다.
확장해서 오만한 하나의 객체보다 서로 조화롭게 협력하는 설계를 훌륭한 객체지향의 설계라고 강조한다.
엘리스의 내용 중 재판을 하는 과정의 에피소드로 이후 내용을 이어간다.
재판이라는 하나의 프로세스에 등장하는 여러 등장인물들을 객체로 보았을 때,
각각의 객체간의 협력과 각 객체들의 책임, 그리고 그 역할로 객체들을 추상화한다.
엘리스의 이야기에서 누군가는 재판을 진행해야 하고 누군가는 증인을 증인석으로 불러야 하며 누군가는 증언해야 한다. 이처럼 협력을 구성하는 데 필요한 일련의 책임을 먼저 고안하고 나면 그책임을 수행하는 데 필요한 객체를 선택하게 된다.
여기서 협력을 다시 한번 강조한다. 협력에 필요한 책임이 있는 것이다. 주객전도 되는 것을 경계하라는 의미로 받아들여졌다.
이후 객체지향 설계 기법에 몇가지 소개한다.
1. 책임 주도 설계
- 객체지향 설계란 애플리케이션의 기능을 구현하기 위한 협력 관계를 고안하고, 협력에 필요한 역할과 책임을 식별한 후 이를 수행할 수 있는 적절한 객체를 식별해 나가는 과정.
- 핵심은 올바른 책임을 올바른 객체에게 할당하는 것.
2. 디자인 패턴
모범이 되는 설계. 이전의 훌륭한 결과물을 모방하고 약간의 수정을 거쳐 원하는 결과물을 만들어 내는 것은 효과적으로 일하는 방법 중 하나.
자주등장하는 패턴을 정리해둔 것.
3. 테스트 주도 개발
실패하는 테스트를 작성.
성공하는 테스트를 가장 간단하게 작성.
리팩토링을 통해 중복을 제거.
결과적으로 작동하는 깔끔한 코드를 얻을 수 있다.
이 방식은 책임과 협력의 관점에서 객체를 바라보지 못 한다면 어려움을 느낄 수 있다.
'CS (Computer Science) > 독후감 : 객체지향의 사실과 오해' 카테고리의 다른 글
6일차(완독) - 객체지향 설계를 바라볼 관점의 추가 (1) | 2023.11.21 |
---|---|
5일차(6장) - 기능을 담을 구조라는 재료 (2) | 2023.11.20 |
4일차(5장) - 책임의 자율성이 객체지향 프로그래밍에 미치는 영향 (1) | 2023.11.18 |
2일차 (3장) - 클래스와 객체의 관계. 클래스는 타입을 구현하는 방법 중 하나 (0) | 2023.11.15 |
1일차 (1장, 2장) : 객체는 무엇인가. 현실과 닮은 듯 안 닮은 듯 (0) | 2023.11.14 |