본문 바로가기
독서에서 한걸음

객체지향 설계 용어 정리

by oncerun 2023. 2. 28.
반응형

 

내가 코드를 설명할 때 사용하는 용어에 대한 질문이 있을 수 있다.  (상상)

 

만약 내가 코드를 리뷰한다면 적절히 통용되는 단어를 선택하여 리뷰를 진행할 텐데, 

 

만약 질문자가 해당 용어에 대해 질문한다면 깔끔히 이를 설명할 수 있어야 한다고 생각했다. 

 

그래서 오늘 아침은 간단하게 객체지향 설계에서 사용되는 용어에 대한 정리를 하려고 한다. 

 

객체는 메시지를 통해 협력한다고 우리는 알고 있다. 그리고 메시지를 메서드와 동일화하는 경향이 있다. 

 

객체지향에서는 메시지와 메서드를 명확하게 구분한다. 

 

메시지는 객체가 다른 객체와 협력하기 위해 사용하는 의사소통 메커니즘이다. 

 

오퍼레이션이 실행되도록 요청하는 것을 메시지 전송이라 하고, 메시지는 협력에 참여하는 전송자와 수신자 양쪽 모두 포함하는 개념이다.

 

그렇다면 오퍼레이션은 무엇일까?

 

객체가 다른 객체에게 제공하는 추상적인 서비스라고 한다. 추상적인 서비스?  객체가 공개하는 인터페이스를 말하는 걸까?

 

메시지는 수신자와 송신자 사이의 협력 관계를 강조한다. 그에 비해 오퍼레이션은 메시지를 수신하는 객체의 인터페이스를 강조한다. 

 

아! 이는 메시지 전송자와 수신자의 역할을 분명히 나누어 전송자는 고려하지 않고 수신자의 관점에 집중하는 것이다. 

메시지 수신이란 메시지에 대응되는 객체의 오퍼레이션을 호출하는 것을 의미한다. 

 

 

이를 정리하면 다음과 같다.

 

메시지는 수신자와 송신자의 협력관계를 강조하는 의사소통 메커니즘이다. 협력을 위해선  메시지를 통해서만 가능하다. 

 

그리고 송신자는 수신자에게 특정 오퍼레이션이 실행되도록 요청하는데 이를 메시지 전송이라고 한다. 

 

송신자가 요청하는 특정 오퍼레이션은 수신자 입장에서 외부에 제공하는 인터페이스이다.

 

이를 강조하기 위해 메시지 수진자가 제공하는 추상적인 서비스를 오퍼레이션이라고 한다. 

 

내가 사용하는 인터페이스라는 용어도 설명이 필요하다. 

 

퍼블릭 인터페이스라고 하는데, 이는 객체가 협력에 참여하기 위해 외부에서 수신할 수 있는 메시지의 묶음을 말한다. 

 

클래스의 퍼블릭 메서드들의 집합이나 메시지의 집합을 가리키는 데 사용된다. 

 

퍼블릭 인터페이스가 집합을 말한다면 오퍼레이션을 프로그래밍 언어의 관점에서  해당 집합에 포함된 메시지를 오퍼레이션이라고 부른다.

 

메서드는 프로그래밍 관점에서 메시지에 응답하기 위해 실행되는 코드 블록을 메서드라고 한다. 

 

메서드는 오퍼레이션의 구현이다. 동일한 오퍼레이션이라고 해도 메서드는 다를 수 있다. 

 

즉 오퍼레이션과 메서드의 구분은 다형성의 개념과 연결된다.

 

클린코드, 리팩터링 책을 읽어보면 시그니처라는 단어가 나온다. 

 

시그니처는 오퍼레이션이나 메서드의 명세를 나타낸 것으로 이름과 인자의 목록을 포함한다. 

 

대부분의 언어는 시그니처의 일부로 반환 타입을 포함하지 않지만 반환 타입을 시그니처의 일부로 포함하는 언어도 존재한다.

 

 

반응형

댓글