본문 바로가기
OOP/<오브젝트>, 조영호

3장 협력, 책임, 역할

by 민휘 2024. 1. 17.

협력

  • 기능 구현을 위해 수행하는 상호 작용
  • 협력은 객체가 필요한 이유와 행동을 결정한다. 이 행동은 객체의 내부 상태를 결정한다.
  • 캡슐화된 객체는 자신의 책임을 수행하던 중에 외부의 도움이 필요하면 메시지를 전송해 협력을 요청한다.

 

책임

  • 협력에 참여하기 위해 객체가 수행하는 행동.
  • 종류 : 아는 책임, 하는 책임
  • 적절한 책임을 적절한 객체에 할당하는 것이 객체지향설계에 있어 가장 중요한 부분
  • 책임주도설계와 같이 메시지가 객체를 선택하도록 하는 방식은 최소한의 인터페이스를 제공하며 무엇을 해야하는지에 집중할 수 있다. 메시지를 전송하는 것에 집중하므로 자연스럽게 캡슐화된 객체들의 협력을 얻을 수 있다.
  • 협력, 책임, 역할 중 책임이 가장 중요하다. 협력은 어떤 행동이 필요한지 맥락을 제공하며, 역할은 책임을 모아 추상화한 것이기 때문이다.

 

역할

  • 책임의 집합으로, 여러 행동을 모아 추상화한 것
  • 역할을 정의하면 상위 협력 흐름에 집중할 수 있고, 유연한 설계가 가능하다.
  • 책임과 역할 중 어느 것을 먼저 식별할 수 있는지는 요구사항에 따라 다른데, 타협 가능한 방식은 단순하게 객체로 시작해 책임과 협력을 정제하여 필요한 순간에 역할을 분리하는 것.
  • 객체는 여러 역할을 가지는데, 특정 협력 안에서는 오직 하나의 역할이 일시적으로 보인다.