본문 바로가기
개발관련 서적 정리/객체지향의 사실과 오해

04. 역할, 책임, 협력

by Backchus 2020. 10. 7.

역할, 책임, 협력

협력

  • 협력은 다수의 요청과 응답으로 구성되며 전체적으로 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다.

책임

  • 어떤 대상에 대한 요청은 그 대상이 요청을 처리할 책임이 있음을 암시한다.
  • 객체지향 설계의 예술은 적절한 객체에게 적절한 책임을 할당하는 데 있다. 명확한 책임이 애플리케이션의 미래를 결정짓는다는 것을 명심하라.
  • 객체지향 설계는 협력에 참여하기 위해 어떤 객체가 어떤 책임을 수행해야 하고 어떤 객체로부터 메시지를 수신할 것인지를 결정하는 것으로부터 시작된다.

역할

  • 역할의 가장 큰 가치는 하나의 협력 안에 여러 종류의 객체가 참여할 수 있게 함으로써 협력을 추상화 할 수 있다는 것이다.
  • 역할의 대체 가능성은 행위 호환성을 의미하고, 행위 호환성은 동일한 책임의 수행을 의미한다.

객체의 모양을 결정하는 협력

  • 객체지향의 핵심은 클래스를 어떻게 구현할 것인가가 아니라 객체가 협력 안에서 어떤 책임과 역할을 수행할 것인지를 결정하는 것이다.
  • 결과적으로 클래스와 데이터는 협력과 책임의 집합이 결정되 후에야 무대 위에 등장할 수 있다.
  • 각 객체가 가져야 하는 상태와 행위에 대해 고민하기 전에 그 객체가 참여할 문맥인 협력을 정의하라.
  • 객체를 충분히 협력적으로 만든 후에 협력이라는 문맥 안에서 객체를 충분히 자율적으로 만드는 것이다.

객체지향 설계 기법

  • 객체지향 설계의 핵심은 올바른 책임을 올바른 객체에 할당하는 것이다.
  • 효과적으로 일하는 사람들의 한 가지 특징은 아무것도 없는 상태에서 작업을 시작하지 않고 이전의 훌륭한 결과물을 모방하고 약간의 수정을 거쳐 원하는 결과물을 만들어 낸다는 것이다.
  • 디자인 패턴은 책임-주도 설계의 결과물인 동시에 지름길이다.
  • 테스트-주도 개발은 책임-주도 설계의 기본 개념을 따른다.
  • 객체지향을 강력하게 만드는 비밀은 책임과 메시지에 숨겨져 있다.

참고 서적: http://www.yes24.com/Product/Goods/18249021?scode=032&OzSrank=1