본문 바로가기

JAVA/OOP

메시지

반응형

메시지의 개념

-객체와 다른 객체를 접근하기 위한 장치이다.

-한 객체가 다른 객체에 서비스를 요청하기 위한 장치이다.

-객체.함수명(매개변수) 형태로 구성된다.


메시지의 정의

객체지향 프로그램은 객체들의 집합체이다.

즉, 서로 상호작용하는 객체들로 구성된 시스템이라고 할 수 있다.

따라서 단일 객체 그 자체만으로는 의미가 없으며 하나 이상의 객체들이 모여서 그들 간에 서로 상호 작용해야 객체지향 프로그램으로써 의미가 있게 된다.


객체지향 프로그래밍을 클래스 지향 프로그래밍이 아닌 객체지향 프로그래밍이라고 표현하는 데도 이 철학이 담겨있다.

프로그램의 작동 주체는 클래스가 아닌 객체들이며, 이러한 객체들이 모여서 서로 정보를 주고 받으면서 프로그램이 작동되기 때문이다.


이처럼 객체들이 서로 상호작용하기 위해서 객체가 다른 객체에 접근을 해야하는데, 이 장치를 '메시지(Message)'라고 한다.

여기서 한 객체가 다른 객체에 접근한다는 의미는 한 객체가 다른 객체의 서비스를 요청한다는 의미다.

예) 쇼핑몰에서 '홍길동' 고객 객체가 자신이 주문한 '주문'내용을 조회하기 위해서는 고객객체에서 주문객체로 서비스를 요청해야 하는 것이다. 여기서 고객 객체에서 주문객체로 서비스를 요청하기 위한 장치가 메시지가 되는 것이며, 고객 객체에서 주문 객체로 메시지를 보내는 행위를 메시지 전달이라고 한다.

이 메시지 전달은 기존 절차지향 프로그래밍에서의 함수 호출이 객체지향으로 오면서 변형된 형태이다.

절차지향에서는 함수단위로 구성되어 있기 때문에 한 함수에서 또 다른 함수를 직접 호출하였다.

그러나 객체지향에서는 이러한 함수들이 특정 객체 속으로 캡슐화 되었기 때문에 함수 호출은 직접 이루어지는 것이 아니라 특정 객체에서 다른 객체의 함수를 호출해야 한다.

이를 메시지라고 표현한다.


전송객체 -----함수명(매개변수) ---> 수신객체


메시지는 서비스를 필요로 하는 객체(전송객체)에서 서비스를 제공하는 객체(수신객체)로 전송된다.

메시지를 보낸다는 의미에서 전송객체라고 표현하였고, 메시지를 받는다는 의미에서 수신객체라고 표현한 것이다.

따라서 전송객체는 자신이 필요로 하는 서비스를 갖고 있는 해당 객체에게 메시지 형태로 서비스를 보내는 것이다.

그리고 수신 객체는 메시지를 받게 되면, 자신이 갖고 있는 서비스를 송신객체에게 제공해 주게 되는 것이다.


메시지는 메시지를 받을 수신객체,함수명,매개변수로 구성된다.


메시지 특성

1.메시지 수신의 대상은 객체 단위이다.

-객체지향 프로그램에서 프로그램의 주체는 클래스가 아니라 객체이다.

프로그램 개발할 때는 클래스단위로 프로그래밍을 하지만 프로그램을 실행할 때는 객체 단위로 돌아간다.

따라서 메시지 전달에 있어서 메시지를 받는 대상 또한 객체이다.

이는 결국 메시지 형태에서 함수명 앞에 수신객체를 명시하게 되는 것이다.

물론 예외적으로 클래스 단위로 메시지를 보내는 형태도 존재할 수 있다.이를 객체에서 보내는 메시지와 구별하기 위해 정적 메시지라고 하며, 객체에게 보내는 메시지를 동적메시지라고 한다. 메시지 형태에서의 차이는 단지 객체명 대신 클래스명을 쓴다.


2. 메시지는 수신객체가 갖는 공용 함수들에 해당한다.

- 송신 객체가 수신 객체에게 보내는 메시지는 수신 객체가 지니는 모든 함수들에 대한 것은 아니다.

송신 객체가 수신 객체에게 보낼 수 있는 메시지는 수신 객체와 외부에 공개한 함수들에 대해서만 가능하다.

따라서 메시지에 들어가는 함수는 수신 객체가 갖는 공용 함수들에 해당한다.



UML

메시지 설계는 순차도를 이용하여 '홍길동'객체와 'TV' 객체간의 메시지 흐름을 설계할 수 있다.


홍길동:Customer TV:Product


  searchProduct('Bordeaux')

--------------------------->




public class Customer {

public Boolean interestProduct(String productName) {

Product TV = new Product();

Boolean exist = TV.searchProduct(productName);   //메시지 전달

resturn exist;

}

}




정리

메시지는 객체와 다른 객체를 접근하기 위한 장치이다.

메시지는 한 객체가 다른 객체에 서비스를 요청하기 위한 장치이다.

메시지는 객체.함수명(매개변수) 형태로 구성된다.

메시지 수신의 대상은 객체 단위이다.

메시지는 수신 객체가 갖는 공용 함수들에 해당한다.

객체들 간의 메시지 전달에 대한 설계는 UML의 기능을 흐름을 설계할 수 있는 상호작용 다이어그램(Interaction Diagram)을 이용하여 설계될 수 있다.

자바에서 객체의 메시지 구현은 객체 내에 포함된 함수 중에 공개도니 함수를 전달하여 구현한다.

자바에서 메시지 전달의 구현은 한 객체에서 다른 객체의 함수를 호출하는 것으로 '객체.함수(매개변수)'형태로 구현한다.


출처-UML과 JAVA로 배우는 객체지향 설계 및 구현

반응형

'JAVA > OOP' 카테고리의 다른 글

상속  (0) 2018.04.17
복합객체  (0) 2018.04.17
캡슐화와 정보은닉  (1) 2018.04.13
클래스와 객체  (0) 2018.04.13
소프트웨어 개발 패러다임과 객체지향  (0) 2018.04.13