------------------------------------------------------------
abstract class DObject {//추상클래스 DObject
abstract public void draw();
}
------------------------------------------------------------
public class Line extends DObject {//추상클래스 DObject의 서브클래스 Line
public void draw(){
System.out.println("Line");//서브클래스 Line에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Rect extends DObject {//추상클래스 DObject의 서브클래스 Rect
public void draw(){
System.out.println("Rect");//서브클래스 Rect에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
public class Circle extends DObject {//추상클래스 DObject의 서브클래스 Circle
public void draw(){
System.out.println("Circle");//서브클래스 Circle에서 오버라이딩 된 메소드 draw
}
}
------------------------------------------------------------
import java.util.Scanner;
public class Editor {
public void editor()
{
final int MAX = 100;//도형을 담을 수 있는 최대 크기
DObject store[] = new DObject[MAX];//추상클래스의 객체배열 레퍼런스 변수 선언, 도형을 저장하는 곳
int last=0;//마지막에 선언한 도형이 있는 위치이자, 도형의 갯수
int loop=1;//삽입, 삭제, 모두 보기, 종료를 실행하는 메뉴를 순환시키는 변수
int number, number2;//입력받은 값을 저장하는 변수
while(loop != 4){
System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>");
Scanner input1 = new Scanner(System.in);
loop = input1.nextInt();
switch(loop){
case 1://삽입
System.out.print("도형 종류 Line(1), Rect(2), Circle(3)>>");
Scanner first = new Scanner(System.in);
number = first.nextInt();
if(number == 1){
store[last] = new Line();//Line 도형을 넣는다.
last++;
}
else if(number == 2){
store[last] = new Rect();//Rect 도형을 넣는다.
last++;
}
else if(number == 3){
store[last] = new Circle();//Circle 도형을 넣는다.
last++;
}
else{
System.out.print("1 ~ 3 중에서 선택하시오.");
}
break;
case 2://삭제
if(last != 0){//도형의 수가 0이 아니면
System.out.print("삭제할 도형의 위치(ex - 첫 번째 도형은 1 두 번째 도형은 2)>>");
Scanner second = new Scanner(System.in);
number2 = second.nextInt();
if(number2 <= last){//입력받은 삭제할 도형의 위치가 도형의 수보다 낮으면
for(int i=number2-1; i<last; i++){
store[i] = store[i+1];
}
last--;
}
else{//입력받은 삭제할 도형의 위치가 도형의 수보다 높으면
System.out.println("삭제할 도형의 위치를 잘못 선택하셨습니다.");
}
}
else{//도형의 수가 0이면
System.out.println("삭제할 도형이 없습니다.");
}
break;
case 3://모두 보기
if(last != 0){//도형의 수가 0이 아니면
for(int i=0; i<last; i++){//저장한 각 도형의 draw함수를 실행시켜 모두 출력
store[i].draw();
}
}
else{//도형의 수가 0이면
System.out.println("출력할 도형이 없습니다.");
}
break;
case 4://끝내기(while문의 반복 조건이 변수 loop가 4가 아닐 때이므로 종료)
System.out.println("프로그램을 종료합니다.");
break;
default://오류처리
System.out.println("1 ~ 4 중에서 선택하시오.");
continue;//다시 while문 처음으로
}
}
}
}
------------------------------------------------------------
public class Main {
public static void main(String [] args){
Editor edit = new Editor();//Editor클래스의 객체 edit를 생성
edit.editor();//edit의 메소드 editor를 호출
}
}
------------------------------------------------------------
아래는 이클립스에서의 실행결과입니다.

댓글 없음:
댓글 쓰기