명품 JAVA 프로그래밍
명품 JAVA 프로그래밍 7장 실습문제 6
anycoding
2021. 12. 1. 21:23
반응형
문제
main() 함수를 다음과 같이 수행할 수 있도록 GrapgicObject를 상속받는 Rect와 Line을 작성하고, GraphicEditor 클래스에 필요한 메소드 add()와 draw()를 작성하여 완성하라
문제 소스 코드
abstract class GraphicObject{
int x,y,w,h;
GraphicObject(int x,int y,int w,int h){
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public abstract void view();
}
public class GraphicEditor {
Vector<GraphicObject> v= new Vector<GraphicObject>();
void add(GraphicObject ob) {
}
void draw() {
}
public static void main(String[] args) {
GraphicEditor g = new GraphicEditor();
g.add(new Rect(2,2,3,4)); // (2,2)에서 3x4짜리 사각형
g.add(new Line(3,3,8,8)); // (3,3)에서 8x8의 사각형 내의 대각선 직선
g.add(new Line(2,5,6,6)); // (2,5)에서 6x6의 사각형 내의 대각선 직선
g.draw();
}
}
결과 예시
2, 2 -> 3, 4의 사각형
3, 3 -> 8, 8의 선
2, 5 -> 6, 6의 선
소스코드
import java.util.Iterator;
import java.util.Vector;
abstract class GraphicObject{
int x,y,w,h;
GraphicObject(int x,int y,int w,int h){
this.x = x;
this.y = y;
this.w = w;
this.h = h;
}
public abstract void view();
}
class Rect extends GraphicObject{
Rect(int x,int y,int w,int h){
super(x,y,w,h);
}
public void view() {
System.out.println(x + ", " + y +" -> " + w + ", " + h + "의 사각형");
}
}
class Line extends GraphicObject{
Line(int x,int y,int w,int h){
super(x,y,w,h);
}
public void view() {
System.out.println(x + ", " + y +" -> " + w + ", " + h + "의 선");
}
}
public class GraphicEditor {
Vector<GraphicObject> v= new Vector<GraphicObject>();
void add(GraphicObject ob) {
v.add(ob);
}
void draw() {
Iterator<GraphicObject> it = v.iterator();
while(it.hasNext()) {
it.next().view();
}
}
public static void main(String[] args) {
GraphicEditor g = new GraphicEditor();
g.add(new Rect(2,2,3,4)); // (2,2)에서 3x4짜리 사각형
g.add(new Line(3,3,8,8)); // (3,3)에서 8x8의 사각형 내의 대각선 직선
g.add(new Line(2,5,6,6)); // (2,5)에서 6x6의 사각형 내의 대각선 직선
g.draw();
}
}
결과
2, 2 -> 3, 4의 사각형
3, 3 -> 8, 8의 선
2, 5 -> 6, 6의 선
반응형