# Language/Java
명품 JAVA 프로그래밍 5장 6번
왕꿀꿀
2018. 7. 21. 09:52
명품 자바 Programming
Chapter5 Ex6
Q :
간단한 그래픽 편집기를 콘솔 바탕으로 만들어보자.
본문의 5.6절의 메소드 오버라이딩과 5.7절은 추상 클래스의 설명 중에
Line, Rect, Circle의 도형 객체를 DObject 클래스를 상속받아 draw() 메소드를 오버라이딩하도록 구성하였다.
이 예제를 완성해보자. DObject를 추상 메소드 draw()를 가진 추상 클래스로 만들어라.
그래픽 편집기의 기능은 "삽입", "삭제", "모두보기", "종료"의 4가지이다.
Solution
DObject.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package chap5ex; public abstract class DObject { abstract public void draw(); } class Line extends DObject { public void draw() { System.out.println("Line"); } } class Rect extends DObject { public void draw() { System.out.println("Rect"); } } class Circle extends DObject { public void draw() { System.out.println("Circle"); } } | cs |
GraphicEditor.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | package chap5ex; import java.util.Scanner; public class GraphicEditor { public GraphicEditor() { final int MAX = 100; DObject dObjects[] = new DObject[MAX]; int count = 0; int mainMenu = 0; int addMenu, deleteMenu; while (mainMenu != 4) { System.out.print("삽입(1), 삭제(2), 모두 보기(3), 종료(4)>>"); Scanner in = new Scanner(System.in); mainMenu = in.nextInt(); switch (mainMenu) { case 1://삽입 System.out.print("도형 종류 Line(1), Rect(2), Circle(3)>>"); Scanner first = new Scanner(System.in); addMenu = first.nextInt(); if (addMenu == 1) { dObjects[count] = new Line(); count++; } else if (addMenu == 2) { dObjects[count] = new Rect(); count++; } else if (addMenu == 3) { dObjects[count] = new Circle(); count++; } else { System.out.print("Select 1~3"); } break; case 2:// 삭제 if (count != 0) { System.out.print("삭제할 도형의 위치>>"); Scanner second = new Scanner(System.in); deleteMenu = second.nextInt(); if (deleteMenu <= count) { for (int i = deleteMenu - 1; i < count; i++) { dObjects[i] = dObjects[i + 1]; } count--; } else { System.out.println("삭제할 수 없습니다."); } } else { System.out.println("삭제할 도형이 없습니다."); } break; case 3:// 모두 보기 if (count != 0) { for (int i = 0; i < count; i++) { dObjects[i].draw(); } } else { System.out.println("출력할 도형이 없습니다."); } break; case 4:// 종료 System.out.println("프로그램을 종료합니다."); break; default: System.out.println("Select 1~4"); continue; } } } public static void main(String[] args) { GraphicEditor editor = new GraphicEditor(); } } | cs |
Key Point
오픈 챌린지 참고
유용하셨다면 공감 버튼 ↓ 눌러주세요!
728x90