메시지와 메서드

메시지

"메시지는 객체들이 서로 협력하기 위해 사용할 수 있는 유일한 의사소통 수단이다."
  • 메시지를 처리할 수 있다는 이야기 는 해당 메시지에 해당하는 행동을 수행해야 할 책임이 있다는 이야기이다.

  • 따라서 객체가 수신할 수 있는 메시지의 모양 이 객체가 수행할 책임의 모양을 결정한다.

  • 객체가 제공하는 메시지 는 외부의 다른 객체가 볼 수 있는 공개된 영역 에 속하고 메시지를 처리하기 위해 책임을 수행하는 방법은 외부에서 볼 수 없게 객체 자신의 사적인 영역 에 속한다.

  • 외부의 객체는 메시지에 관해서만 볼 수 있고 객체 내부는 볼 수 없기 때문에 자연스럽게 객체의 외부와 내부가 분리된다.

메서드

"메서드란 메시지를 처리하기 위해 내부적으로 선택하는 방법이다."
  • 객체는 메시지를 수신하면 먼저 해당 메시지 처리 여부를 확인하고, 처리할 수 있다면 메시지를 처리할 방법인 메서드를 선택 한다.

  • 메시지는 단지 '무엇'이 실행되기를 바라는지만 명시하기 때문에, 어떤 메시지를 선택할 것인지는 전적으로 수신자의 결정에 좌우된다.

  • 메서드는 클래스 안에 포함된 함수 또는 프로시저를 통해 구현된다.

다형성

"다형성이란 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다."
  • 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신할 경우 서로 다른 메서드를 이용해 메시지를 처리할 수 있는 메커니즘을 가리킨다.

  • 메시지에는 처리 방법과 관련된 어떤 제약도 없기 때문에 동일한 메시지라도 서로 다른 방식의 메서드를 이용해 처리할 수 있다. 따라서 다형성을 하나의 메시지와 하나 이상의 메서든 사이의 관계로 볼 수 있다.

  • 그렇기에 다형성은 동일한 역할을 수행할 수 있는 객체들 사이의 대체 가능성을 의미한다.

  • 다형성은 이러한 대체 가능성을 이용해 설계를 유연하고 재사용 가능하게 한다.

  • 또한 다형성을 사용하면 송신자가 수신자의 종류를 모르더라도 메시지를 전송할 수 있기 때문에 수신자의 종류를 캡슐화한다.

유연하고 확장 가능하고 재사용성이 높은 협력의 의미

  • 송신자는 수신자가 메시지를 이해한다면 누구라도 상관하지 않는다. 이 말은 대체 가능성을 의미하고 대체 가능성을 바탕으로 느슨한 결합을 통해 파급효과 없이 협력을 변경 할 수 있다.

  • 대체 가능성을 바탕으로 한 느슨한 결합은 새로운 유형의 객체를 위한 확장도 쉽게 가능 하게 한다.

  • 또한 다양한 문맥에서 협력을 재사용 할 수 있다.

  • 이렇듯 송신자가 수신자에 대해 매우 적은 정보만 알고 있더라도 상호 협력이 가능하다는 사실은 설계의 품질에 큰 영향을 미친다.

송신자와 수신자를 약하게 연결하는 메시지

  • 송신자가 수신자의 정확한 타입을 모르더라도 상관이 없다는 것 은 송신자와 수신자를 얇은 끈으로만 이어지게 한다.

  • 그렇기 때문에 메시지는 송신자와 수신자 사이의 결합도를 낮춤으로써 설계를 유연하고, 확장 가능하고, 재사용 가능하게 만든다.

Last updated