본문 바로가기
스터디

[객체지향의 사실과 오해] 5장. 책임과 메시지

by eunoo 2023. 6. 30.
자율적인 책임

객체는 자율적이다. 객체는 각자 맡은 책임을 수행한다. 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다.

 

 

자율적=동적

자율적이란 무엇인가. 

메시지와 메서드

메시지는 메시지 이름과 인자로 구성된다. 객체는 오로지 메시지를 통해서 다른 객체와 협력할 수 있다.

메시지를 처리하기 위해 메서드를 사용한다.

객체는 메시지를 수신하면 먼저 해당 메시지를 처리할 수 있는지 여부를 확인한다.

다형성

메시지는 어떻게 수행될 것인지 명시하지 않는다. 메시지는 단지 무엇이 실행되길 바라는지 명시하며, 어떤 메시지를 선택할 것인지는 수신자가 결정한다.

즉, 메시지는 무엇이 실행될지 명시하지만 메시지를 어떻게 실행할 것인지는 전적으로 수신자가 결정할 수 있다.

 

 

 

메시지를 따라라

객체지향의 세계에서 객체들이 협력하기 위한 유일한 방법은 메시지를 전송하는 것이다.

클래스는 단지 코드를 구현하기 위한 도구일 뿐 객체지향의 핵심은 객체들이 주고받는 메시지로부터 나온다.

 

객체 인터페이스

인터페이스의 특징

  • 내부 구조를 몰라도 서로 상호작용이 가능하다.
  • 인터페이스를 변경하지 않고, 단순히 내부 구조만 변경하는 것은 인터페이스 사용자에게 어떤 영향을 미치지 않는다.
  • 대상이 변경되더라도 동일한 인터페이스를 제공하기만 하면 아무런 문제 없이 상호작용할 수 있다.
인터페이스와 구현의 분리

훌륭한 객체란 구현은 모른 채 인터페이스만 알면 상호작용할 수 있는 객체를 의미한다.

객체를 설계할 때 객체 외부에 노출되는 인터페이스와 객체의 내부에 숨겨지는 구현을 명확하게 분리해서 고려해야 한다.

이때 내부에 구현을 숨기는 건 캡슐화를 의미한다.

책임의 자율성이 협력의 품질을 결정한다
  1. 자율적인 책임은 협력을 단순하게 만든다.
  2. 자율적인 책임은 객체의 외부와 내부를 명확하게 분리한다.
  3. 책임이 자율적일 경우 책임을 수행하는 내부의 방법을 변경하더라도 외부에는 영향이 미치지 않는다.
  4. 자율적인 책임은 협려의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.
  5. 객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.

 

배달이라는 도메인에서 주문이라는 행동(메시지)에 집중

행동과 메시지를 분명하게 분리해야 한다.

댓글