책/객체지향의 사실과 오해

OOP 객체지향처럼 생각해보기 2

100win10 2020. 12. 21. 20:43

 

인터페이스 정리하기


  • 전 글에서 우리가 얻어낸 것은 객체들의 인터페이스입니다.
  • 객체가 수신한 메시지가 객체의 인터페이스를 결정한다는 사실을 기억해야 합니다.

 

  • 메시지가 객체를 선택했고, 선택된 객체는 메시지를 자신의 인터페이스로 받아들입니다.
  • 각 객체를 협력이라는 문맥에서 떼어내어 수신 가능한 메시지만 추려내면 객체의 인터페이스가 됩니다.
  • 객체가 어떤 메시지를 수신할 수 있다는 것은 그 객체의 인터페이스 안에 메시지에 해당하는 오퍼레이션이 존재한다는 것을 의미합니다.

 

각 객체별로 설명하면 다음과 같습니다.

  • 손님 객체의 인터페이스 안에는 ‘제품을 주문하라’ 라는 오퍼레이션이
  • 메뉴판 객체의 인터페이스 안에는 ‘메뉴 항목을 찾아라’ 라는 오퍼레이션이
  • 바리스타 객체의 인터페이스 안에는 ‘커피를 제조하라’ 라는 오퍼레이션이
  • 커피 객체는 ‘생성하라’ 라는 오퍼레이션을

 

 

  • 실제로 소프트웨어의 구현은 객체들을 포괄하는 타입을 정의한 후 식별된 오퍼레이션을 타입의 인터페이스에 추가해야 합니다.

 

  • 객체의 타입을 구현하는 일반적인 방법은 클래스를 이용하는 것입니다.
  • 협력을 통해 식별된 타입의 오퍼레이션은 외부에서 접근 가능한 공용 인터페이스의 일부라는 사실을 기억해야 합니다.
  •  인터페이스에 포함된 오퍼레이션 역시 외부에서 접근 가능하도록 공용(public)으로 선언돼 있어야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Customer {
    public void order(String menuName) {}
}
class MenuItem {
    
}
class Menu {
    public MenuItem choose(String name) {}
}
 
class Barista {
    public Coffe makeCoffe (MenuItem menuItem) {}
}
 
class Coffee {
    public Coffee (MenuItem menuItem) {}
}
cs

 

 

 

참조


객체지향의 사실과 오해

 

생각하라, 객체지향처럼