메시지, 메서드

Single Ko·2023년 8월 28일
0

코딩 도서 읽기

목록 보기
2/3

오브젝트(조영호 저) 참조

메시지의 중요성

객체지향 프로그래밍에 대한 초보자들의 실수 - '클래스'를 중심에 놓는다

  • 실제 처음 입문할 클래스를 직접 만지고 구현할 수 있는 도구
  • 하지만 이는 어디까지나 중요한 '도구' 일 뿐이다.

무엇을 중심에 놓아야 하나? - '객체', 더 정확하게는 협력안에서 객체가 수행하는 책임.

애플리케이션은 클래스를 통해 구현되지만, 메시지를 통해 정의된다.

객체가 수신하는 메시지들이 객체의 퍼블릭 인터페이스를 구성한다. 다만 책임 주도 설계방법을 따르는 것만으로는 훌륭한 퍼블릭 인터페이스를 얻기가 힘들다.

협력 : 객체가 다른 객체에게 무언가를 요청할 때 시작된다.
메시지 : 객체 사이의 협력을 가능케 하는 매개체

객체가 다른 객체에게 접근할 수 있는 유일한 방법은 메시지를 전송하는 것 뿐이다.

Message 구성 요소

  • 수신 메시지와, 외부에 전송하는 메시지를 객체 설계에서 고려해야 한다.

  • 메시지 : 오퍼레이션명(operation name)과 인자(argument)로 구성. 메시지 전송은 여기서 수신자를 추가한 것.

  • 메시지를 수신했을 때 실제로 어떤 코드가 실행되는 함수 또는 프로시저를 메서드라고 부른다. 코드에서 동일하게 메시지를 전송하더라도 객체의 타입에 따라 실행되는 메서드가 달라질 수 있다. (인터페이스에서 구현체가 여러개인 경우를 생각하면 좋음)

객체지향에서는 코드의 의미가 컴파일 시점과 실행 시점의 의미가 달라질 수 있다. 코드를 짤때는 어떤 코드가 실행될 것인지 정확하게 알 수 없다.

메시지 vs 메서드

메시지와 메서드에 대해서 확실하게 둘이다르다는 것을 인식하게 되었다.

Message 

Condition condition = new Condition();

 수신자		오퍼레이션명    인자
condition.isSatisfiedBy(screening);

Method

실제 메시지를 받는 수신자 정의(클래스라는 도구를 이용하여)
public class Condition () {
	...
    
    메서드(실제 메시지를 받게되면 실행되는 함수)
	public boolean isSatisfiedBy(Screening screenign) {
    	...
    }
}

퍼블릭 인터페이스

객체의 안과 밖은 뚜렷하게 나뉘어 있다. 밖에서는 객체 내부에 무엇이 있는지 알 수 없음. 외부에서는 오로지 객체가 공개하는 메시지를 통해서만 객체와 상호작용이 가능하며, 이렇게 객체가 외부와의 소통을 위해 공개하는 메시지의 집합을 퍼블릭 인터페이스라고 한다.

퍼블릭 인터페이스란

객체가 외부와의 소통을 위해 공개하는 메시지들의 집합. 여기에 포함된 메시지를 오퍼레이션(operation)이라고 함.(이때 구현 코드는 제외)

메시지를 수신했을때 실제 실행되는 코드 - 메서드

퍼플릭 인터페이스와 메시지의 관점에서는 '메서드 호출' 이라는 용어보단, '오퍼레이션 호출' 이라는 말이 더 적절하다.

시그니처

오퍼레이션(or method)의 이름과 파라미터 목록을 합쳐 시그니처(signature)라고 부른다.

하나의 오퍼레이션에 대하여 오직 하나의 메서드만 존재한다면? - 굳이 메서드와 오퍼레이션을 구분x

하지만, 다형성의 구현에서 보자면 - 오퍼레이션 하나에 여러가지 메서드를 구현해야한다. 그렇기에 구분을 하는 것이다.

오퍼레이션 호출에 대해 서로 다른 메서드들이 실행되는 것 : 다형성이라 볼 수 있다.

메시지, 오퍼레이션, 메서드, 퍼블릭 인터페이스, 시그니처 - 각각의 용어와 개념을 이해하고 구분

profile
공부 정리 블로그

0개의 댓글