본문 바로가기
CS (Computer Science)/독후감 : 객체지향의 사실과 오해

3일차(4장) - 협력을 위한 책임. 책임에 맞는 객체. 객체가 참여할 수 있는 역할.

by 우인입니다 2023. 11. 17.

 


최후통첩 실험 에피소드로 4장이 시작된다.

인간은 이기적이면서도 합리적인가에 대한 가설에 대한 실험.

하지만 인간은 단순한 계산만으로 움직이지 않고 놓여진 상황, 문맥에 맞게 행동한다.

이 문맥은 타인과의 협력을 맺는 과정.

 

돌고돌아 협력의 중요성을 강조한다.

확장해서 오만한 하나의 객체보다 서로 조화롭게 협력하는 설계를 훌륭한 객체지향의 설계라고 강조한다.


 

엘리스의 내용 중 재판을 하는 과정의 에피소드로 이후 내용을 이어간다.

재판이라는 하나의 프로세스에 등장하는 여러 등장인물들을 객체로 보았을 때,

각각의 객체간의 협력과 각 객체들의 책임, 그리고 그 역할로 객체들을 추상화한다.

 

엘리스의 이야기에서 누군가는 재판을 진행해야 하고 누군가는 증인을 증인석으로 불러야 하며 누군가는 증언해야 한다. 이처럼 협력을 구성하는 데 필요한 일련의 책임을 먼저 고안하고 나면 그책임을 수행하는 데 필요한 객체를 선택하게 된다.

 

 여기서 협력을 다시 한번 강조한다. 협력에 필요한 책임이 있는 것이다. 주객전도 되는 것을 경계하라는 의미로 받아들여졌다.

 


이후 객체지향 설계 기법에 몇가지 소개한다.

 

1. 책임 주도 설계

- 객체지향 설계란 애플리케이션의 기능을 구현하기 위한 협력 관계를 고안하고, 협력에 필요한 역할과 책임을 식별한 후 이를 수행할 수 있는 적절한 객체를 식별해 나가는 과정.

- 핵심은 올바른 책임을 올바른 객체에게 할당하는 것.

 

 

2. 디자인 패턴

모범이 되는 설계. 이전의 훌륭한 결과물을 모방하고 약간의 수정을 거쳐 원하는 결과물을 만들어 내는 것은 효과적으로 일하는 방법 중 하나.

자주등장하는 패턴을 정리해둔 것.

 

3. 테스트 주도 개발

실패하는 테스트를 작성.

성공하는 테스트를 가장 간단하게 작성.

리팩토링을 통해 중복을 제거.

결과적으로 작동하는 깔끔한 코드를 얻을 수 있다.

이 방식은 책임과 협력의 관점에서 객체를 바라보지 못 한다면 어려움을 느낄 수 있다.