Taking baby-developer steps

[객체지향의 사실과 오해] 4. 역할, 책임, 협력 - 2 책임 본문

CS 지식/객체지향

[객체지향의 사실과 오해] 4. 역할, 책임, 협력 - 2 책임

Surin Lee 2023. 11. 21. 17:41

 객체가 요청에 대해 대답해 줄 수 있거나, 적절한 행동을 할 의무가 있는 경우, 해당 객체는 책임을 가진다. 책임을 객체에 잘 할당하는 것은 객체지향 설계에서 중요하다.

책임

 객체에 의해 정의되는 응집도 있는 행위의 집합이다. 객체의 책임은 "객체가 무엇을 알고 있는가(knowing)"와 무엇을 할 수 있는가(doing)"로 구성된다. 각 객체가 명확한 책임을 가지는 것이 좋다. 책임은 객체의 공용 인터페이스(public interface)를 구성하는데, 이는 객체 지향의 중요한 원리 중 하나인 캡슐화와 깊은 관련이 있다.

책임과 메시지

 협력 내의 객체는 다른 객체로부터 요청이 전송됐을 경우에만 자신의 책임을 수행한다. 한 객체가 다른 객체에게 주어진 책임을 다하라고 요청 보내는 것을 메시지 전송(messge-send)이라고 한다. 두 객체간 협력은 메시지를 통해 이루어 진다. 요청하는 객체를 송신자, 요청을 받아 처리하는 객체를 수신자라고 한다. 메시지가 협력을 위해 다른 객체에게 접근하는 유일한 방법이다.

책임은 협력이라는 문맥 속 수신자 객체 관점에서 무엇을 할 수 있는지를 나열한다.

메시지는 협력에 참여하는 두 객체 사이 관계를 조명한다. 

책임과 메시지의 수준이 같지는 않다! 책임은 객체가 수행해야하는 행위를 상위 수준에서 개략적으로 서술한 것이고, 하나의 책임은 여러 메시지로 분할 되는 것이 일반적이다. 설계 시작에서는 어떤 객체가 어떤 책임을 가지고 어떤 방식으로 서로 협력할지를 개요만 설정해도 충분하다. 이후 메시지의 윤곽도 잡은 후에서야 구현의 단계에서 어떤 클래스가 필요하고 어떤 메서드를 포함해야하는지를 결정하면 된다.


참고문헌 : 객체지향의 사실과 오해

Comments