3장 역할, 책임, 협력

객체지향 패러다임의 핵심은 역할, 책임, 협력

협력하는 객체들의 공동체를 창조

협력 - 애플리케이션 기능을 구현하기 위해 수행하는 상호작용

책임 - 객체가 협력에 참여하기 위해 수행하는 로직

역할 - 책임들의 집합

협력

객체지향에서 기능을 구현할 수 있는 유일한 방법

객체를 설계하기 위한 필요 문맥

한 객체가 다른 객체에 **메시지 전송**을 할 때 시작

유일한 방법 → 다른 객체의 내부 구현에 접근 불가하기 때문

수신 객체는 메서드를 실행해 응답

어떻게 처리할지는 스스로 결정 == 자율적인 존재

ex)

Screening —calculateMovieFee(screening)→ Movie

Movie가 기본 요금과 할인 정책을 가장 잘 알고 있기 때문

Screening이 직접 Movie 내부의 객체에 접근한다면?

Movie의 자율성 훼손

⇒ 내부 구현을 **캡슐화**할 때 가장 자율적임

협력이 설계의 문맥을 결정한다.

객체 = 상태 + 행동

상태와 행동을 어떻게 정의해야할까?

  1. 행동

    → 협력에 참여할 적절한 행동인가?

    Movie 행동을 결정하는 것은 영화 예매를 위한 협력

  2. 상태

    행동을 수행하는 데에 필요한 상태가 무엇인가?

    Movie 내부 상태를 가지고 있는 이유는 요금 계산이라는 행동을 수행하는 데에 필요

결정 방향

⭐ 객체가 참여하는 협력 → 객체의 행동 → 객체의 상태

책임