오브젝트 3장

오브젝트 3장

제 3장

역할, 책임, 협력

  • 상속은 코드 재사용을 하기에 널리 알려진 방법이지만 캡슐화 측면에서는 합성이 더 좋은 방법
  • 객체지향에서 가장 중요한 것은 역할, 책임, 협력
  • 협력
    • 메시지 전송을 통해 객체간 커뮤니케이션
    • 객체는 분리된 인스턴스가 아닌 서로 협력하는 파트너
    • 협력을 위해서 객체는 자율적이여야 하며 객체가 자율적이기 위해선 기본적으로 캡슐화가 되어야 함
    • 협력은 설계를 위한 문맥(conetxt)를 제공
  • 책임
    • 협력에 참여하기 위해 객체가 수행하는 행동을 책임이라 부른다.
    • 책임은 하는 것아는 것 두가지로 나뉜다.
    • 하는 것
      • 객체를 생성하거나 계산을 수행하는 등 스스로 하는 것
      • 다른 객체의 행동을 시키는 것
      • 다른 객체의 행동을 제어하고 조절하는 것
    • 아는 것
      • 사적인 정보에 관해 아는 것
      • 관련된 객체에 관해 아는 것
      • 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것
    • 메시지가 객체를 결정하게 하라
      • 이로 인해 객체는 최소한의 인터페이스를 가질 수 있다.
      • 또한 객체는 추상적 인터페이스를 가질 수 있다.
    • 행동이 상태를 결정한다.
      • 객체를 객체답게 만드는 것은 객체의 상태가 아니라 객체가 다른 객체에게 제공하는 행동이다.
  • 역할
    • 역할을 통해 유연하고 재사용 가능한 협력을 얻을 수 있다.
      • 이상한 나라의 앨리스에서 재판장에 왕과 여왕이, 증인에 앨리스와 모자장수가, 왕의 명령을 받아 수행하는 역할에 토끼가 오듯이
    • 역할은 다른 것으로 교체할 수 있는 책임의 집합이다.
    • 역할의 구현은 일반적으로 추상 클래스인터페이스를 이용
    • 하나의 책임을 수행하는 대상이 하나라면 간단하게 객체로 간주한다.
    • 하나의 책임을 수행하는 대상이 여러 종류라면 역할이라고 불러도 좋다.
    • 역할이 중요한 이유는 동일한 협력을 수행하는 객체들을 추상화할 수 있기 때문

Reference

오브젝트 - 조영호



© 2022. by minkuk

Powered by minkuk