안녕하세요 개발자 문문입니다.
오늘은 3장 역할, 책임, 협력에 대해 공부하겠습니다.
- 협력
- 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 합니다.
- 메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 방법입니다.
- 자율적인 객체는 자신에게 할당된 책임을 수행하던 중에 필요한 정보를 알지 못하거나 외부의 도움이 필요한 경우 적절한 객체에게 메시지를 전송해서 협력을 요청합니다.
- 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력입니다.
- Ex) 'Movie'라는 객체안에 영화 요금을 계산하는 메서드가 주로 있다 > 이것은 'Movie'가 영화가 상영이 아닌 영화 예매를 하기위한 협력에 참여하고 있고, 요금을 계산하는 책임을 지고 있다.
- 협력은 객체를 설계하는데 필요한 일종의 문맥(context)을 제공합니다.
- 책임
- 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라고 합니다.
- 객체의 책임은 '하는 것'과 '아는 것'으로 나눕니다.
'하는 것'
- 객체를 생성하거나 계산을 수행하는 등의 스스로 하는 것
- 다른 객체의 행동을 시작시키는 것
- 다른 객체의 활동을 제어하고 조절하는 것
'아는 것'
- 사적인 정보에 관해 아는 것
- 관련된 객체에 관해 아는 것
- 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것
- 객체는 자신이 맡은 책임을 수행하는 데 필요한 정보를 알고 있을 책임이 있습니다.
- 객체는 자신이 할 수 없는 작업을 도와줄 객체를 알고 있을 책임이 있습니다.
- 협력이 객체의 행동을 결정하고 행동이 상태를 결정합니다. 그리고 그 행동이 객체의 책임이 됩니다.
- Ex) 협력 : '예매해라' , 책임 : '예매 관련된 정보를 가장 많이 갖고 있는 Screening 객체(영화, 순번, 상영시간) 에게 '예매하라'의 행동을 수행하도록 책임 할당
- 역할
- 객체들이 협력안에 수행하는 책임들이 모여 객체가 수행하는 역할을 구성합니다
- 역할은 다른 것으로 교체할 수 있는 책임의 집합입니다.
- 위에서 Screening에 '예매하라'의 행동을 수행하도록 책임을 할당했습니다. 이때 Screening의 역할은 예매를 하는 객체라고 하는데 책임을 할당하도록 결정하는 것을 역할이라고 합니다.
- Ex) 할인 정책(DiscountPolicy) 객체의 자식 객체 금액 할인(AmountDiscountpolicy), 비율 할인(PercentDiscountPolicy)가 있다고 가정합니다.
- 이때 할인 정책 이라는 역할을 지정(DiscountPolicy)하고 상황에 따라 금액 할인(AmountDiscountpolicy), 비율 할인( PercentDiscountPolicy)객체에 책임을 할당합니다.
- 즉, 역할은 설계의 구성 요소를 추상화 할 수 있습니다.
'Object' 카테고리의 다른 글
[Object] Chapter06. 메시지와 인터페이스 (0) | 2025.08.23 |
---|---|
[Object] Chapter05. 책임 할당하기 (6) | 2025.08.12 |
[Object] Chapter04. 설계 품질과 트레이드오프 (0) | 2025.07.26 |
[Object] Chapter02. 객체지향 프로그래밍 (0) | 2025.07.15 |
[Object] Chapter01. 객체, 설계 (2) | 2025.07.14 |