Taking baby-developer steps

[객체지향의 사실과 오해] 5. 책임과 메시지 - 1. 메시지 본문

CS 지식/객체지향

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

Surin Lee 2023. 12. 1. 23:49

메시지

- 이번 포스팅은 C++, 자바, C# 등의 언어에서 사용되는 메시지 전송 문법을 사용해 예시를 보인다. 중요한 것은 메시지 전송 문법이 아니라, 메시지 전송을 구성하는 요소이다.

커피 주문을 위한 협력을 떠올려보자. 캐셔가 바리스타에게 "커피를 만들어라"라는 메시지를 전송한다. "커피를 만들어라" 부분을 메시지 이름(message name)이라고 한다. 메시지 전송 시 추가적인 정보가 필요한 경우 메시지의 인자(argument)를 통해 추가 정보를 제공할 수 있다. 

커피를 만들어라(카페라떼, 한잔)

 메시지 전송은 수신자와 메시지(메시지 이름 + 인자)의 조합이다. 캐셔가 바리스타에게 요청을 하기 위해서는 누구에게 전송을 해야하는지 알아야한다. 바리스타 역할을 맡은 박고슴씨에게 전송하고 싶다면 다음과 같은 메시지를 전송한다.

박고슴. 커피를 만들어라(카페라떼, 한잔)

위 메시지를 수신한 박고슴씨는 해당 메시지를 처리할 수 있는지 확인한다. 박고슴씨가 해당 메시지를 처리할 수 있다면, "커피를 만들어라"라는 메시지가 박고슴씨가 수행할 책임을 결정한다. 

 메시지는 객체가 유일하게 이해할 수 있는 의사소통이며, 각 객체는 자율적인 방법을 선택해 메시지를 처리한다. 외부의 객체는 메시지만 볼 수 있고 객체 내부는 볼 수 없다.

 

 

 

Comments