메시지와 인터페이스

bp.chys·2020년 3월 19일
0

OOP & Design Pattern

목록 보기
5/17

협력과 메시지

  • 객체가 독립적으로 수행할 수 있는 것보다 더 큰 책임을 수행하기 위해서는 다른 객체와 협력해야 한다.
  • 두 객체의 협력을 가능하게 해주는 매개체가 바로 메시지이다.
  • 메시지와 메서드를 분리하는 것이 커다란 차이를 만든다.
    • 메시지 : 호출하는 시점
    • 메서드 : 실행되는 시점 (동적으로 바인딩 되기 때문에 다형성이 적용되면서 큰 효과가 있다.)

인터페이스

퍼블릭 인터페이스와 오퍼레이션

  • 퍼블릭 인터페이스란 객체가 의사소통을 위해 외부에 공개하는 메시지의 집합을 말한다.
  • 오퍼레이션이란 퍼블릭 인터페이스에 포함된 메시지를 말한다. 보통은 추상화된 시그니처를 의미한다.
    • 시그니처 구성요소
      • 기능 식별 이름
      • 파라미터 및 파라미터 타입
      • 기능 실행 결과 값
  • 메시지 전송 → 오퍼레이션 호출 → 메서드 실행

인터페이스와 설계 품질

  • 좋은 인터페이스는 최소한의 인터페이스추상적인 인터페이스라는 조건을 만족해야 한다.
    • 최소한의 인터페이스는 꼭 필요한 오퍼레이션만을 인터페이스에 포함한다.
    • 추상적인 인터페이스는 어떻게 수행되는 지가 아니라 무엇을 하는지를 표현한다.
  • 이는 책임 주도 설계 방법으로 달성할 수 있다.
  • 책임 주도 설계 방법은 메시지를 먼저 선택함으로써 협력과는 무관한 오퍼레이션을 배제하고 최소의 오퍼레이션만 포함한다. 또한 메시지가 객체를 선택하게 함으로써 클라이언트의 의도를 메시지에 표현할 수 있게 한다.

의도를 드러내는 인터페이스

  • 메서드 이름을 짓는 방법은 어떻게가 아니라 무엇을 하는지를 드러내는 것이다.
  • 이를 위해서는 외부의 객체가 메시지를 전송하는 목적을 먼저 생각해야 하고, 그 목적은 객체의 책임이 되어야 한다.
  • 결과적으로 구현과 관련된 모든 정보를 캡슐화하고, 객체의 퍼블릭 인터페이스에는 협력과 관련된 의도만을 표현해야 한다.

결론

객체는 서로 메시지를 주고 받으며 협력 관계를 맺는다. 메시지와 메서드를 구분하는 것은 다형성의 강력함을 이해할 수 있는 시작이라고 할 수 있다.

메시지는 퍼블릭 인터페이스를 통해 다른 객체에게 알려진다. 좋은 인터페이스는 책임 주도 설계 방법을 통해 최소한의 인터페이스와 추상적인 인터페이스 조건을 만족시켜야 하며 메시지를 호출하는 클라이언트의 목적이 잘 드러나야 한다.

캡슐화의도를 드러내는 인터페이스를 통해 결합도가 낮으면서도 의도를 명확히 드러내는 간결한 협력 구조를 설계할 수 있게 된다.


참고자료

  • 오브젝트 - 조영호
profile
하루에 한걸음씩, 꾸준히

0개의 댓글