Taking baby-developer steps

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

CS 지식/객체지향

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

Surin Lee 2023. 12. 3. 23:16

메서드

 객체가 수신한 요청을 처리하기 위해 내부적으로 선택하는 방법을 "메서드"라고한다. 수신한 메시지를 처리할 수 있는지 여부를 확인 한 객체가, 책임을 다하기 위해 메서드를 선택한다. 객체지향 프로그래밍 언어에서 메서드는, 클래스 내 포함된 함수 또는 프로시저를 통해 구현된다.

 절차적언어(예를 들어 C)는 프로시저 호출에 대한 실행 코드를 컴파일 시간에 결정하지만, 객체지향 프로그래밍 언어는 그렇지 않다. 

다형성

 서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 의미한다. 메시지는 "무엇"이 실행될지는 명시하지만 "어떻게"실행 할지는 수신자가 결정한다. 즉 동일한 메시지도 서로 다른 방식의 메서드를 이용해 처리할 수 있다. 

 서로 다른 객체들이 다형성을 만족 시킨다는 것은, 그들이 동일한 책임을 공유한다는 뜻이다. 다형성에서는 메시지 송신자의 관점이 중요하다. 송신자는 다형적인 수신자들을 구별할 필요 없이, 수신자들 모두 자신의 요청을 수행할 책임을 가지고 있다는 점에서 동일하다. 즉, 대체 가능성과도 이어진다. 다형성을 사용하면 송신자가 수신자의 종류를 몰라도 메시지를 전송할 수 있다. 즉, 수신자의 종류를 캡슐화한다. 커피를 만드는 협력에서, 송신자인 캐셔는 커피를 만들 사람이 박고슴, Elin, 나미꼬 그 누구던 간에 "커피를 만들어라"는 메시지를 이해하는 "바리스타"의 역할을 수행할 수 있다면 누구와도 협력이 가능하다.

 다형성은 송신자와 수신자 간의 객체 타입 결합도를 메시지에 대한 결합도로 낮춘다. 이로 인해 더 유연하고 확장 가능하고 재사용성이 높아진다. 협력이 유연해 진다.


참고문헌 : 객체지향의 사실과 오해

Comments