반응형
이전 문제까지는 명품JAVA 개정판이였고 이번 문제부터 개정 4판입니다.
문제
Vector<Shape>의 벡터를 이용하여 그래픽 편집기를 만들어보자. 본문 5.6절과 5.7절에서 사례로 든 추상 클래스 Shape과 Line, Rect, Circle 클래스 코드를 잘 완성하고 이를 활용하여 "삽입", "삭제", "모두 보기", "종료"의 4가지 그래픽 편집 기능을 프로그램으로 작성하라. 6장 실습문제 6번을 Vector<Shape>을 이용하여 재작성하는 연습이다. Vector를 이용하면 6장 실습문제 6번보다 훨씬 간단히 작성됨을 경험할 수 있다.
출력 예시
그래픽 에디터 beauty을 실행합니다.
삽입(1), 삭제(2), 모두보기(3), 종료(4) >> 1
Line(1), Rect(2), Circle(3) >> 2
삽입(1), 삭제(2), 모두보기(3), 종료(4)>>1
Line(1), Rect(2), Circle(3) >> 3
삽입(1), 삭제(2), 모두보기(3), 종료(4)>>3
Rect
Circle
삽입(1), 삭제(2), 모두보기(3), 종료(4)>>2
삭제할 도형의 위치 >> 3
삭제할 수 없습니다.
삽입(1), 삭제(2), 모두보기(3), 종료(4)>>4
beauty을 종료합니다.
소스 코드
import java.util.Scanner;
import java.util.Vector;
abstract class Shape{
public Shape() {};
public abstract String draw();
}
class LineTen extends Shape{
@Override
public String draw() {
return "Line";
}
}
class RectTen extends Shape{
@Override
public String draw() {
return "Rect";
}
}
class CircleTen extends Shape{
@Override
public String draw() {
return "Circle";
}
}
class GraphicEditorbeauty{
Vector<Shape> v = new Vector<Shape>();
public void Menu() {
Scanner s = new Scanner(System.in);
System.out.println("그래픽 에디터 beauty을 실행합니다.");
while(true) {
System.out.print("삽입(1), 삭제(2), 모두보기(3), 종료(4)>>");
int input = s.nextInt();
switch(input) {
case 1:
addshape(s);
break;
case 2:
removeshape(s);
break;
case 3:
Print();
break;
case 4:
System.out.println("beauty을 종료합니다.");
System.exit(0);
break;
default:
break;
}
}
}
private void Print() {
for(int i = 0;i<v.size();i++)
{
System.out.println(v.get(i).draw());
}
}
private void addshape(Scanner s) {
System.out.print("Line(1), Rect(2), Circle(3) >> ");
int input = s.nextInt();
switch(input) {
case 1:
LineTen L = new LineTen();
v.add(L);
break;
case 2:
RectTen R = new RectTen();
v.add(R);
break;
case 3:
CircleTen C = new CircleTen();
v.add(C);
break;
default:
System.out.println("잘못된 입력");
break;
}
}
private void removeshape(Scanner s) {
System.out.println("삭제할 도형의 위치 >> ");
int remove = s.nextInt();
if(v.size() <= remove) {
System.out.println("삭제할 수 없습니다.");
}
else
v.remove(remove);
}
}
public class Main10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
GraphicEditorbeauty GE = new GraphicEditorbeauty();
GE.Menu();
}
}
반응형
'명품 JAVA 프로그래밍' 카테고리의 다른 글
명품 JAVA 프로그래밍 8장 실습문제 1 (0) | 2021.12.08 |
---|---|
명품 JAVA 프로그래밍 7장 실습문제 11 (0) | 2021.12.02 |
명품 JAVA 프로그래밍 7장 실습문제 9 (0) | 2021.12.01 |
명품 JAVA 프로그래밍 7장 실습문제 8 (0) | 2021.12.01 |
명품 JAVA 프로그래밍 7장 실습문제 7 (0) | 2021.12.01 |