객체지향 설계 흐름

  1. 협력을 위한 문맥 결정
  2. 필요한 책임을 식별
  3. 책임을 수행할 객체를 선택
  4. 책임 구현

책임

객체지향에서는 협력에 참여하기 위해 한 객체가 다른 객체에게 제공하는 행동을 책임이라고 한다.

아래 그림에서는 DiscountPolicy 객체는 할인 요금을 계산하는 책임을 수행하고 있고, DiscountCondition객체는 할인 여부를 판단하는 책임을 수행하고 있음

두 객체가 자신에게 할당된 책임을 수행함으로써 다른 객체와 협력하게 된다는 사실을 눈여겨 봐라

image.png

여기서 객체가 외부에 제공해야하는 책임에는 두 가지 카테고리가 있다.

책임은 행동 관점

  1. 하는 것(Doing)
    1. 객체를 생성하거나 계산을 하는 등의 스스로 하는 것
    2. 다른 객체(협력자)의 행동을 시작시키는 것
    3. 다른 객체(협력자)의 활동을 제어하고 조절하는 것
  2. 아는 것(knowing)
    1. private로 캡슐화된 상태(데이터)에 관해 아는 것
    2. 관련된 객체(협력자)에 관하여 아는 것
    3. 자신이 유도하거나 계산할 수 있는 것(상태와 협력자)에 관하여 아는 것

책임은 행동 관점이기 때문에 어떤 것을 아는 책임을 할당받았다는 것은 해당 데이터를 저장해야 한다는 것이 아니라 정보에 대해 대답할 수 있어야 한다는 것을 의미