Keyword
-
Interface
-
Subclassing
-
Subtyping
문제를 단순화하기 위해 Box class가 추가된 World class를 다시 보자.
World class 내에서 ball과 box를 구분해야 할 곳은 어디인가?
이것만 일반화할 수 있다면 문제가 쉽게 해결되지 않을까?
World class는 출력되는 오브젝트들은 모두 일정한 영역을 갖는다. 앞서 정의한 ball이나 box에서도 getRegion 함수를 이용해 영역 확인이 가능하다.
이러한 공통적인 기능들이 제공되는 type을 정의한다.
-
영역을 가지는 type
-
public Point getLocation()
-
Region의 위치.
-
영역의 중심
-
-
public int getWidth()
-
영역의 폭
-
-
int getHeight();
-
영역의 높이
-
-
int getMinX();
-
영역의 최소 X 좌표
-
-
int getMaxX();
-
영역의 최대 X 좌표
-
-
public int getMinY();
-
영역의 최소 Y 좌표
-
-
public int getMaxY();
-
영역의 최대 Y 좌표
-
-
public boolean intersects(Regionable other);
-
영역간 교차 영역 존재 여부
-
-
public Regionable intersection(Regionable other);
-
영역간 교차 영역
-
World class는 도형을 받아서 화면에 출력하는 작업을 한다. 따라서, 실제로 필요한 것은 paint 함수를 가진 오브젝트면 어떠한 종류든 상관이 없다.
-
MovableBall, MovableBox 그리고 MovableWorld? Movable!
-
MovableWorld에서 오브젝트를 이동하기 위해 필요한 것은 해당 오브젝트에서 이동에 필요한 함수 지원 여부
-
BoundedBall, BoundedBox 그리고 BoundedWorld?? Bounded!