본문 바로가기

Books

[IT][정리] 객체지향의 사실과 오해 : 역할, 책임, 협력 관점에서 본 객체지향

책임 주도 개발

What / Who 사이클

어떤 행위(What)를 수행 할 것인 지를 결정한 후에 누가(Who) 그 행위를 수행할 것 인지를 결정해야 한다.
책임 주도 설계는 객체가 아니라 객체를 주고 받는 메시지에 초점을 맞추게 함으로 써 객체 지향의 장점을 극대화 한다.

묻지 말고, 시켜라( Tell, Don’t Ask )

  • 객체 지향적인 사고 방식
    • 좀 더 추상적인 인터페이스 : 수신자의 자율성을 보장할 수 있다.
    • 최소의 인터페이스 : 외부에서 사용할 필요가 없는 인터페이스는 최대한 노출하지 않는다.
    • 인터페이스와 구현 간에 차이가 있다는 점을 인식 : 외부에 공개되는 인터페이스와 내부에 감춰지는 구현

객체를 설계 할 때,

속성보다는 행동에 집착하고, 객체가 행하는 행동을 통해서 협력하는 것에 중점을 둔 설계를 생각하자. 
이것은 곧 객체의 행동을 통한 책임을 기반으로 서로의 관계를 모델링 한 후에 각 객체의 속성을 정의 하자. (TDD적 생각이 도움이 될 듯)

역할, 책임, 협력을 먼저 생각하자.

  • 역할, 책임, 협력
    • 여러 사람이 동일한 역할을 수행 할 수 있다.
    • 역할은 대체 가능성을 의미한다.
    • 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
    • 한 사람이 동시에 여러 역할을 수행할 수 있다.

객체지향 개발에서 가장 중요한 능력은 책임을 능숙하게 객체에 할당하는 것이다.

책임의 분류와 방법( 하는 것(doing)과 아는 것(knowing) )

doingknowing
객체 생성, 계산 등 스스로 하는 것개인적인 정보를 아는 것
다른 객체의 행동을 시작 시키는 것관련된 객체를 아는 것
다른 객체의 활동을 제어 하는 것자신이 유도한 것이나 계산한 것을 아는 것