현재의 world에는 ball만 존재한다. ball 이외의 다른 물체가 존재한다면 어떻게 될 것인가?
사각형의 box를 world에 추가해 보도록 하자.
2차원 공간에서의 Box는 우리가 흔히 알고 있는 사각형이다.
-
생성 후 이동이나 정보 변경 불가
-
x, y로 이루어진 중심점 좌표, 폭, 높이을 갖는다.
-
중심점 좌표, 폭, 높이는 생성 시 설정한다.
-
복제 생성자를 구성한다.
-
각 필드 값을 요청할 수 있다.
-
코드 중복은 최소화하라.
-
코딩 규칙을 따라 작성한다.
-
Source Code
-
World상에 색을 가지고 그려질 수 있다.
Box class에서 도형을 그리는 paint 함수를 보면, 사각형을 그리기 위해 fillRect를 사용한다.
-
(x, y)는 box의 중심 좌표를 나타낸다.
-
fillRect는 우측 상단 꼭짓점과 폭, 높이 정보가 필요하다.
-
Box class 확장
-
awt Graphics context를 매개변수로 받아 그릴 수 있도록 paint 함수 추가
-
Source Code
Ball만 존재하던 world에 Box를 추가할 수 있도록 수정해 보자.
-
Source Code
-
물음
-
Box 추가에 문제는 없나?
-
Data type만 다를 뿐 동일한 작업은 문제없나?
-
새로운 종류가 추가된다면?
-
box를 관리하기 위한 필드를 추가할뿐만 아니라 관련된 함수들을 모두 추가해야 한다. 생각보다 번거로운 일이 아닐 수 없다.
이는 World class가 확장성을 전혀 가지고 있지 못하다는 것을 보여 준다.
두 번째 방법으로 Ball class와 Box class의 상위 class로 Region class를 이용하는 방법이 있을 수 있다.
-
새로운 종류 추가에 문제가 없는가?
-
paint에서 Object class에 대해 처리가 가능한가?
두 가지 방식 모두 좋아 보이지 않는다. 그렇다고 하더라고 나머지 추가 작업이 없다면 사용할 수 있을 것이다.
하지만, World class를 확장해서 정의한 MovableWorld, BoundedWorld는 어떻게 해야 하나?
World class에서 했던 작업을 동일하게 반복해야 한다.
문제가 간단하지만은 않은 듯하다.