Object

[Object] Chapter03. 역할, 책임, 협력

개발자 문문 2025. 7. 22. 21:59

안녕하세요 개발자 문문입니다.

오늘은 3장 역할, 책임, 협력에 대해 공부하겠습니다.

 

  • 협력

- 객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 합니다.

- 메시지 전송은 객체 사이의 협력을 위해 사용할 수 있는 유일한 방법입니다.

- 자율적인 객체는 자신에게 할당된 책임을 수행하던 중에 필요한 정보를 알지 못하거나 외부의 도움이 필요한 경우 적절한 객체에게 메시지를 전송해서 협력을 요청합니다.

- 객체의 행동을 결정하는 것은 객체가 참여하고 있는 협력입니다.

- Ex) 'Movie'라는 객체안에 영화 요금을 계산하는 메서드가 주로 있다 > 이것은 'Movie'가 영화가 상영이 아닌 영화 예매를 하기위한 협력에 참여하고 있고, 요금을 계산하는 책임을 지고 있다.

- 협력은 객체를 설계하는데 필요한 일종의 문맥(context)을 제공합니다.

 

  • 책임

- 객체가 협력에 참여하기 위해 수행하는 로직을 책임이라고 합니다.

- 객체의 책임은 '하는 것''아는 것'으로 나눕니다.

'하는 것'

  •  객체를 생성하거나 계산을 수행하는 등의 스스로 하는 것
  • 다른 객체의 행동을 시작시키는 것
  • 다른 객체의 활동을 제어하고 조절하는 것

'아는 것'

  • 사적인 정보에 관해 아는 것
  • 관련된 객체에 관해 아는 것
  • 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것

- 객체는 자신이 맡은 책임을 수행하는 데 필요한 정보를 알고 있을 책임이 있습니다.

- 객체는 자신이 할 수 없는 작업을 도와줄 객체를 알고 있을 책임이 있습니다.

- 협력이 객체의 행동을 결정하고 행동이 상태를 결정합니다. 그리고 그 행동이 객체의 책임이 됩니다.

- Ex) 협력 : '예매해라' , 책임 : '예매 관련된 정보를 가장 많이 갖고 있는 Screening 객체(영화, 순번, 상영시간) 에게 '예매하라'의 행동을 수행하도록 책임 할당 

 

  • 역할

- 객체들이 협력안에 수행하는 책임들이 모여 객체가 수행하는 역할을 구성합니다

- 역할은 다른 것으로 교체할 수 있는 책임의 집합입니다.

- 위에서 Screening에 '예매하라'의 행동을 수행하도록 책임을 할당했습니다. 이때 Screening의 역할은 예매를 하는 객체라고 하는데 책임을 할당하도록 결정하는 것을 역할이라고 합니다.

- Ex) 할인 정책(DiscountPolicy) 객체의 자식 객체 금액 할인(AmountDiscountpolicy), 비율 할인(PercentDiscountPolicy)가 있다고 가정합니다.

- 이때 할인 정책 이라는 역할을 지정(DiscountPolicy)하고 상황에 따라 금액 할인(AmountDiscountpolicy), 비율 할인( PercentDiscountPolicy)객체에 책임을 할당합니다.

- 즉, 역할은 설계의 구성 요소를 추상화 할 수 있습니다.