역할, 책임, 협력

less than 1 minute read

  1. 객체지향 패러다임의 핵심은 “역할”, “책임”, “협력”에 있다.
  2. 객체들의 “공동체” 구성이 중요하다.

객체들은 “역할”을 가지고 있고, 애플리케이션의 기능 구현을 위한 상호작용을 “협력”이라고 하며, 객체가 “협력”에 참여하기 위해 수행하는 로직을 “책임”이라고 부른다.

객체지향 시스템은 자율적인 객체들의 “공동체”이다.

협력

두 객체 사이의 “협력”은 하나의 객체가 다른 객체에게 도움을 요청할 때 시작. “메시지 전송”이라는 방식이 유일한 커뮤니케이션 방법이다.

“메시지 전송”은 메서드를 이용해서 이루어진다.

외부의 객체는 메시지를 전송할 뿐, 수신하는 객체 스스로 처리할 방법을 결정한다.

public class Movie {
  ///... 중략 ...
  public Money calculateMovieFee(Screening screening) {
          return fee.minus(discountPolicy.calculateDiscountAmount(screening));
  }
}

Screening 객체는 Movie의 calculateMovieFee 에 메시지를 전송함으로써 요금계산을 진행한다.

책임

객체의 책임은 객체가 ‘무엇을 알고 있는가’와 ‘무엇을 할 수 있는가’로 구성된다.

‘하는 것’ and ‘아는 것’이 중요

객체지향 설계는 협력에 필요한 메시지를 찾고 메시지에 적절한 객체를 선택하는 반복적인 과정을 통해서 이루어진다.

협력이 책임을 이끌어내고 책임이 협력에 참여할 객체를 결정한다.

상태에 초점을 맞추는것이 아니라 객체의 행동에 초점을 맞춰야한다.

Leave a comment