HW2

단국대학교 응용컴퓨터공학전공 JAVA프로그래밍1 (2016년 가을학기) 실습
과목코드 : 514760-1
날짜: 2016년 10월 6일

– 실습번호 : HW2 (Due by 10/20)
– 실습제목 : class, abstract class, inheritance, set/get, ArrayList
– 실습요약 : 입체 도형의 겉넓이(surface area)와 부피(volume) 구하기 & 평면 도형의 넓이(area) 구하기
– 준비자료 : HW1
http://www.mathsisfun.com/area-calculation-tool.html
http://math.about.com/od/formulas/ss/surfaceareavol.htm

10/20까지 online.dankook.ac.kr 이러닝으로 source code(*.java), binary code(*.class), 보고서(12-font 2~3 page)를 학번_이름_Ex2.zip으로 묶어서 이러닝에 제출한다. 보고서 (30%)

– 실습문제
0. GeometryType과 FigureType을 아래와 같이 정의한다.
enum GeometryType { SPHERE(1), CONE(2), CYLINDER(3), RECTANGULAR_PRISM(4), SQUARE_PYRAMID(5), ISOSCELES_TRIANGULAR_PRISM(6) }
enum FigureType { TRIANGLE(1), SQUARE(2), RECTANGLE(3), PARALLELOGRAM(4), RHOMBUS(5), TRAPEZOID(6) }

1. Geometry와 Figure 추상클래스는 아래와 같이 정의한다.
public abstract class Geometry {
public abstract GeometryType getType(); // 도형타입 (GeometryType)
public abstract double getSurfaceArea(); // 겉넓이
public abstract double getVolume(); // 부피
public abstract void getAdditionalUserInput(); // 추가적인 사용자 입력
public void printInfo() {
System.out.println(toString() + “ S.A.=” + getSurfaceArea() + “ Vol=” + getVolume());
}
public abstract class Figure {
public abstract FigureType getType(); // 도형타입 (FigureType)
public abstract double getArea(); // 넓이
public abstract void getAdditionalUserInput(); // 추가적인 사용자 입력
public void printInfo() {
System.out.println(toString() + “Area=” + getArea());
}

2. Geometry 추상클래스를 상속받은 Sphere, Cone, Cylinder, … 는 겉넓이(Surface Area), 부피(Volume)를 계산하여 출력한다. 그리고 Figure 추상클래스를 상속받은 Triangle, Square, Rectangle, … 등 클래스는 넓이(Area)를 계산하여 출력한다.

3. GeometryFactory 클래스와 FigureFactory 클래스는 사용자가 입력한 도형타입에 따라 원하는 실제 클래스 (즉, Sphere, Cone, … 그리고 Triangle, Square,.. 등등) 객체를 생성하여 계산한다. 이 클래스는 다음의 메소드 (Method)만을 갖는다.
+public static Geometry getInstance(GeometryType type)
+public static Figure getInstance(FigureType type)

4. GeometryCalculator 클래스와 FigureCalculator 클래스는 계산 메소드를 갖는다
+ public static void calculateAll() // ArrayList에 Geometry/Figure 객체를 생성하여 넣고, 각각의 SurfaceArea&Volume/Area계산한다.
+ public static void calculateByUserInput() // 사용자 입력으로 원하는 Geometry /Figure객체를 생성하여 SurfaceArea&Volume/Area를 계산하고, ArrayList에 저장해 두었다가 프로그램을 종료할 시 전체 리스트를 출력한다.

5. Utility 클래스에서는 각종 유틸리티 메소드를 갖는다.
+public static GeometryType getUserGeometry()
+public static FigureType getUserFigure()
+public static double getUserInputDouble()
+public static int getUserInputBetween(int min, int max)
+public static boolean getUserExitKey()

6. GeoFigCalculator 클래스에서는 사용자의 입력에 따라 GeometryCalculator와 FigureCalculator를 이용하여 계산한 모든 결과를 출력한다.

7. 사용자의 잘못된 입력에 따른 처리를 반드시 포함해야 하며, 그 외에 본인이 더 테스트해보고 싶은 method나 routine을 추가하라. 실행 화면과 코드를 첨부하시오.