본문 바로가기
책 정리/오브젝트

[책 오브젝트] CHAPTER3 - 역할, 책임, 협력

by chanwoodev 2023. 6. 18.

객체지향의 핵심

  • 역할
  • 책임
  • 협력

협력

객체 간 메세지 전송 - 다른 객체에게 도움을 요청

  • 메서드를 실행헤 요청에 응답
  • 캡슐화 → 객체의 자율성 상승

협력이 설계를 위한 문맥을 결정함

  • 객체의 행동을 결정하는 것은 협력임

책임

협력에 참여하기 위해 객체가 수행하는 행동임

하는 것아는 것으로 나뉘어짐

하는 것: 객체 생성, 계산 수행, 다른 객체 활동 제어 등

아는 것: 사적인 정보, 관련된 객체에 관해 아는 것

책임 할당

책임수행에 있어 필요한 정보를 가장 잘 아는 전문가(INFORMATION EXPERT)에게 책임을 할당 → 객체 자율성 상승

협력에 필요한 메세지 찾기 → 적절한 객체 선택 (반복)

메세지가 객체를 결정함

장점

  • 최소한의 인터페이스
  • 추상적인 인터페이스

객체의 상태(x) 행동에 집중해야함

  • 객체가 다른 객체에게 하는 행동에 집중해야함
  • 상태에 집중하면 절대 안됨
  • 캡슐화의 중요성

역할

  • 어떤 객체가 특정한 협력 안에서 수행하는 책임의 집합
  • 다른 것으로 교체할 수 있는 책임의 집합
  • 역할의 구현에 집중 X, 어떤 역할을 수행하는 지 결정이 중요 (추상화)
  • 설계 초반에는 적절한 책임과 협력의 큰 그림을 탐색하는 것이 가장 중요함
    • 협력에 어떤 책임이 필요한지 이해하는게 중요!
  • 유연하고 확장 가능하며 일관된 구조를 가지는 시스템을 구축하는데 매우 중요함
  • 설계 구성 요소 추상화의 장점이 있음

객체 대 역할 (역할을 수행하는 객체가 하나?)

  • 협력에 적합한 책임을 수행하는 대상이 하나라면 객체로 간준
    • 여려 개면 역할로 간주
  • 다양한 객체들이 협력에 참여한다면 역할로 시작
  • BUT 정확한 결정을 내리기 힘들다면 구체적인 객체로 시작!

역할과 추상화

  • 추상화 → 세부사항 생략, 핵심 개념 강조 가능!
  • 추상화 → 설계를 유연하게 만듬