·       Submit your project using the following file format:

   Project_StudentName_Student_ID.zip

  Example: Project_Hongkildong_201620505.zip


  • The zip file will contain two files, namely:

a)      Report file with file format “ProjectReport “to write class diagrams using ML

b)      Source code file that contains the codes of all classes.


I.  General Objective

: To write a Java program that includes the basic concepts of Object Oriented programming that are covered from chapter 4 to chapter 7 such as

a)   Data Encapsulation: Enclosing both data and method in one class( Chapter 4)

b)   Composition(HAS-A relation between two classes ) ( Chapter 4)

c)   Method Overloading ( chapter 4) 

d) Inheritance (IS-A relationship between parent class and child class) (chapter 5)

·                    Inheritance without method overriding 

·                    Inheritance with method overriding without super keyword 

·                    Inheritance with method overriding with super keyword 

·                    Inheritance by overriding the methods of Object class .

e)      Polymorphism (IS- A relation between  parent class and child class) ( chapter5)

f)       Polymorphism (IS- A relation between  Interface and  class) ( chapter 5 and chapter 6)

g)      Exception Handling ( Chapter 7)


II. Specific Objectives  

1.     To write code that requests a user to enter input from key board and display output on screen

2.    To write a java application that includes Interface, supper class ,subclass, and method overriding principles

3.    To write the code of a method that checks the validity of input using Exception handling concept 

 

1. 키보드의 입력을 요청하는 코드를 작성하여 화면에 출력 표시
2. 인터페이스, 저녁 식사 클래스, 하위 클래스, 원칙보다 우선하는 방법을 포함하는 Java 응용 프로그램 작성
3. 예외처리개념을 이용하여 입력의 유효성을 확인하는 방법의 코드를 작성한다.


Part 1: Problem Description to Simulate Computation of Geometrical Shapes

Suppose we want to develop a java application that computes the area and the volume of several types of geometrical shapes for a mathematical study. Geometrical shapes are composed of varices. Geometrical shapes can be two dimensional (2D) or three dimensional (3D). 

 

A)  2D Shapes: Two dimensional shape (2D) has no height. Hence, we can simulate only the computation of its surface area. These shapes can be represented by its vertices (2D points)in two dimensional space.

 

2D는 표면적만 계산 가능하다.

 

B)  3D shapes: Based on the number of base surface areas, three dimensional (3D) geometrical shapes can be pyramid or prism.

   B.1) Prism: It has base surface area and top surface area (both surfaces are identical). Prism has normal height between its base surface and its top surface. It has at least three or more parallelogram lateral surfaces. We can simulate the computation of total surface area (base surface area+ top surface area+ lateral surface area).

 

프리즘 : 총표면적 = 밑변 + 윗변 + 옆면 최소3개(평행사변형)

 

   B.2) Pyramid: Instead of top surface area, a pyramid has apex point A(x,y,z) directly above the center of the base area of the pyramid. Hence, pyramid has only one base surface area. It has normal height from its apex point to the center of its base area. It has also slant heightfrom apex point to the vertices of its base surface.

 

피라미드 : 상단 표면적 대신 중심바로 위 꼭지점 (x,y,z) 존재, 밑변 존재


1)  2D shapes


 1.1)  Equilateral Triangle has three vertices (points): 

V1(x1, y1), V2(x2, y2) and V3(x3, y3).

 

Functional requirement:

·       Request the user to enter the coordinates of the three vertices of the triangle and assign these values to the member variables of this class by setter methods.

·       Compute the following quantities using the formula in part 3

ü  Compute the  length of the three sides of the equilateral triangle

ü  Compute the surface area of the equilateral triangle using the three sides

·       Override the toString() method of Object class to display the information as shown in the output of the program(See part 2)

 

사용자에게 삼각형의 꼭지점 세 개의 좌표를 입력하도록 요청하고 이러한 값을 setter 방법으로 이 클래스의 멤버 변수에 할당한다.
· 파트 3의 공식을 이용하여 다음 수량을 계산한다.

  정삼각형 3면 길이 계산
  삼면을 이용한 정삼각형의 표면적 계산
· Object 클래스의 toString() 메서드를 재정의하여 프로그램 출력에 표시된 정보를 표시한다(2부 참조).

 

Non-functional requirement (exception handling):

·       If the tree vertices are collinear (lie on the same line), they cannot form a triangle because these points form a straight line. Check this by comparing their slopes. Hence, the program should display the error message and request the user to enter non-collinearvertices 

·       If the three vertices (points) are not collinear and if the three sides are not equal, display warning message to user and request the user to continue.

 

3개의 꼭지점이 같은 선에 있는 경우, 이 점들이 직선을 형성하기 때문에 삼각형을 형성할 수 없다.
이들의 기울기를 비교하여 이것을 확인하십시오.
따라서 프로그램은 오류 메시지를 표시하고 사용자에게 비협조 항목 입력을 요청해야 한다. 

· 3개의 꼭지점(점)이 시준되지 않고 3면이 동일하지 않을 경우 사용자에게 경고 메시지를 표시하고 계속 진행하도록 요청한다. 

 


 1.2) Square has four vertices, namely :

upperLeft, upperRight and LowerLefrt and LowerRight: UL(x1,x2),UR(x2,y2),LL(x3,x3) and LR(x4,y4).

However, UL and LR vertices are enough to compute surface area of the square.

 

Functional requirement:

·       Request the user to enter the coordinates of the UpperLeft and LowerRight vertices of the square and assign these values to member variables of this class by setter methods.

·       Compute the following quantities using the formula in part 3

   Compute the length of the side of the square from these vertices.

   Compute the surface area of the square using its side.

·       Override the toString() method of Object class to display the information as shown in the output of the program( See part 2)

 

· 사용자에게 사각형의 UpperLeft 및 LowerRight 정점 좌표를 입력하도록 요청하고, 이러한 값을 setter 방법에 의해 이 클래스의 멤버 변수에 할당한다.
· 파트 3의 공식을 이용하여 다음 수량을 계산한다.
이러한 정점으로부터 정사각형의 옆면 길이를 계산한다.
정사각형의 옆면을 사용하여 정사각형의 표면적을 계산한다.
· Object 클래스의 toString() 메서드를 재정의하여 프로그램 출력에 표시된 정보를 표시한다(2부 참조).

 

Non-functional requirement (exception handling):

·       If the upper left vertex UL(x1,y1) and lower right vertex LR(x4,y4) are the same, the program should display the error message and request the user to enter two different vertices.

·       if x4 is less than  x1, the program should display the error message and request the user to enter correct vertices

·       If y4 is less than y1, the program should display the error message and request the user to enter correct vertices

 

· 왼쪽 상단 정점 UL(x1,y1)과 오른쪽 하단 정점 LR(x4,y4)이 같을 경우 프로그램에 오류 메시지가 표시되고 사용자에게 두 개의 다른 정점 입력을 요청해야 한다.
· x4가 x1보다 작을 경우, 프로그램은 오류 메시지를 표시하고 사용자에게 정확한 정점 입력을 요청해야 한다.
· y4가 y1보다 작을 경우 프로그램에 오류 메시지가 표시되어야 하며 사용자에게 정확한 정점 입력을 요청해야 한다. 
 

2)  Prism(3D shapes)


 2.1) EquilaterlaTriangularPrism 

EquilaterlaTriangularPrism has equilateral triangular shape at its base with three vertices and a normal height:

Functional requirement:

·       Request the user to enter the coordinates of the three vertices of the triangle (the base shape of the prism) and assign these values to member variables of this class by setter methods.

·       Request the user to enter the normal height of the triangular prism and assign this value to a member variable of this class.

·       Compute the length of the three sides of the equilateral triangular base of the prism. 

·       Compute the following quantities using the formula in part 3

  1. Compute the equilateral triangular base area of the prism  from its three sides
  2. Compute the perimeter of the equilateral triangular base of the prism
  3. Compute the lateral surface area of the equilateral triangular prism from the perimeter of the base of the prism and normal height of the prism. 
  4. Compute the surface area of the equilateral triangular prism by adding its base area, top area and lateral surface area. Note that the top area of the prism is the same as its base area.
  5. Compute the volume of the equilateral triangular prism from base area and normal height of prism

 

· 사용자에게 삼각형의 세 꼭지점 좌표(프리즘의 기본 모양)를 입력하도록 요청하고, 이러한 값을 세터 방식으로 이 등급의 멤버 변수에 할당한다.
· 사용자에게 삼각 프리즘의 정상 높이를 입력하고 이 값을 이 클래스의 멤버 변수에 할당하도록 요청한다.
· 프리즘의 정삼각형 베이스의 3면 길이를 계산한다. 
· 파트 3의 공식을 이용하여 다음 수량을 계산한다.
   (1) 프리즘의 3면으로부터 삼각형 모양의 등각선 기초 영역을 계산한다.
   (2) 프리즘의 등변 삼각형 베이스 둘레 계산
   (3) 프리즘의 베이스 둘레와 프리즘의 정상 높이에서 등변 삼각형 프리즘의 측면 표면적을 계산한다. 
   (4) 삼각형 프리즘의 기초 면적, 상단 영역 및 측면 표면적을 추가하여 표면적을 계산한다. 프리즘의 상단 영역은 기준 영역과 동일하다는 점에 유의한다.
   (5) 기초 면적과 프리즘의 정상 높이에서 삼각 프리즘의 부피 계산
· EquialTriangle 클래스의 toString() 메서드를 오버라이드하여 프로그램 출력에 표시된 정보를 표시한다(2부 참조).

 

Non-functional requirement (exception handling):

·       If the tree vertices are collinear (lie on the same line), they cannot form a triangle because these points form a straight line. Check this by comparing their slopes. Hence, the program should display the error message and request the user to enter non-collinear vertices 

·       If the three vertices (points) are not collinear and if the three sides are not equal, display warning message to user and request the user to continue.

·       If the height of the prism is zero or negative, the program should display the error message and request the user to enter valid height

 

· 3개의 꼭지점이 일직선을 이루므로 삼각형을 형성할 수 없다. 이들의 기울기를 비교하여 이것을 확인하십시오. 따라서, 프로그램은 오류 메시지를 표시하고 사용자에게 정점이 아닌 정점을 입력하도록 요청해야 한다. 
· 3개의 꼭지점(점)이 시준되지 않고 3면이 동일하지 않을 경우 사용자에게 경고 메시지를 표시하고 계속 진행하도록 요청한다.
· 프리즘 높이가 0이거나 음수일 경우 프로그램에서는 오류 메시지를 표시하고 사용자에게 유효한 높이를 입력하도록 요청해야 한다.

 

 


 2.2)   SquarePrism 

SquarePrism has square shape at its base with upper left and lower left vertices as well as normal height. 

 

Functional requirement:

·       Request the user to enter the coordinates of the UpperLeft and LowerRight vertices of the square (base of the prism)and assign these values from the member variables of this class.

·       Request the user to enter the normal height of the square prism and assign the value to the member variable of this class.

·       Compute the following quantities using the formula in part 3

(1)  Compute the side of the square from these vertices.

(2)  Compute the base surface area of the square(base of prism) from its side

(3)  Compute the perimeter of the square(base of the prism)from its side

(4)  Compute the lateral surface area of the square(base of prism) from perimeter of the base of the prism and normal height of the prism.  

(5)  Compute the surface area of the square prism by adding its base area, top area and lateral surface area. Note that the top area of the prism is the same its base area.   

(6)  Compute the volume of the square prism from base area and normal height of prism

·       Override the toString() method of square class to display the information as shown in the output of the program( See part 2).

 

· 사용자에게 사각형의 UpperLeft 및 LowerRight 정점(프리즘의 베이스)의 좌표를 입력하고 이 클래스의 멤버 변수에서 이러한 값을 할당하도록 요청한다.
· 사용자에게 사각 프리즘의 정상 높이를 입력하고 값을 이 클래스의 멤버 변수에 할당하도록 요청한다.
· 파트 3의 공식을 이용하여 다음 수량을 계산한다.
(1) 이러한 정점으로부터 정사각형의 측면을 계산한다.
(2) 정사각형(프리즘의 기초)의 기초 표면적을 그 측면에서 계산한다.
(3) 정사각형(프리즘의 밑면)의 둘레를 측면에서 계산한다.
(4) 프리즘의 베이스 둘레와 프리즘의 정상 높이로부터 정사각형(프리즘의 베이스)의 측면 표면적을 계산한다.  
(5) 사각 프리즘의 표면적은 기초 면적, 상단 면적, 측면 면적을 추가하여 계산한다. 프리즘의 상단 영역은 그 기본 영역과 같다는 점에 유의한다.  
(6) 기초 면적과 프리즘의 정상 높이에서 제곱 프리즘의 부피 계산
· 정사각형 클래스의 toString() 메소드를 재정의하여 프로그램 출력(제2부 참조)과 같이 정보를 표시한다.

 

Non-functional requirement (exception handling):

·       If the upper left vertex UL(x1,y1) and lower right vertex LR(x4,y4) are the same, the program should display the error message and request the user to enter two differentvertices.

·       if x4 is less than  x1, the program should display the error message and request the user to enter correct vertices

·       If y4 is less than y1, the program should display the error message and request the user to enter correct vertices

·       If the height of the prism is zero or negative, the program should display the error message and request the user to enter valid height

 

· 왼쪽 상단 정점 UL(x1,y1)과 오른쪽 하단 정점 LR(x4,y4)이 같을 경우 프로그램에 오류 메시지가 표시되고 사용자에게 두 개의 다른 정점 입력을 요청해야 한다.
· x4가 x1보다 작을 경우, 프로그램은 오류 메시지를 표시하고 사용자에게 정확한 정점 입력을 요청해야 한다.
· y4가 y1보다 작을 경우 프로그램에 오류 메시지가 표시되어야 하며 사용자에게 정확한 정점 입력을 요청해야 한다.
· 프리즘 높이가 0이거나 음수일 경우 프로그램에서는 오류 메시지를 표시하고 사용자에게 유효한 높이를 입력하도록 요청해야 한다.

3. Pyramid (3D)


 3.1)   EquilateralTriangularPyramid 

EquilateralTriangularPyramid has equilateral triangular shape at its base which three vertices.

In addition to normal height, the pyramid has slant

 

 Functional requirement:

 

·       Request the user to enter the coordinates of the three vertices of the triangle (base of the pyramid) and assign these values to member variables of this class.

·       Request the user to enter the normal height of the triangular pyramid and assign the value to member variable of this class.

·       Request the user to enter the slant height of the triangular pyramid and assign the value to member variable of this class

·       Compute the following quantities using the formula in part 3

   (1)  Compute the  length of the three sides of the equilateral triangle(base shape of the pyramid) 

   (2)  Compute the triangular base area of the pyramid from its three sides

   (3)  Compute the perimeter of the equilateral triangle (base of the pyramid)

   (4)  Compute the lateral surface area of the triangular pyramid from perimeter and  slant height  

   (5)  Compute the surface area of the triangular pyramid by adding its base area and lateral surface area. Note that pyramid has only base area and it has no top area.   

   (6)  Compute the volume of the triangular pyramid from base area and normal height of pyramid

·       Override the toString() method of EquilateralTrianglePrisim class to display the information as shown in output of the program(See part 3).

 

· 사용자에게 삼각형의 세 꼭지점 좌표(피라미드 밑면)를 입력하도록 요청하고 이 값을 이 등급의 멤버 변수에 할당한다.
· 사용자에게 삼각형 피라미드의 정상 높이를 입력하고 값을 이 등급의 멤버 변수에 할당하도록 요청한다.
· 사용자에게 삼각형 피라미드의 경사 높이를 입력하고 값을 이 등급의 멤버 변수에 할당하도록 요청
· 파트 3의 공식을 이용하여 다음 수량을 계산한다.
(1) 등삼각형(피라미드의 기본 모양)의 3면 길이를 계산한다. 
(2) 피라미드의 3면으로부터 피라미드의 삼각 베이스 면적을 계산한다.
(3) 등변 삼각형의 둘레(피라미드 밑면)를 계산한다.
(4) 삼각형 피라미드의 측면 표면적은 둘레와 경사 높이에서 계산한다.  
(5) 삼각형 피라미드의 기초 면적과 측면 면적을 추가하여 표면적을 계산한다. 피라미드는 기본 영역만 가지고 있고 위쪽 영역은 없다는 점에 유의하십시오.  
(6) 피라미드의 기초 면적과 정상 높이에서 삼각형 피라미드의 부피 계산
· EquialTrianglePrisim 클래스의 toString() 방법을 재정의하여 프로그램 출력에 나타난 정보를 표시한다(3부 참조).

 

Non-functional requirement (exception handling):

·       If the tree vertices are collinear (lie on the same line), they cannot form a triangle because these points form a straight line. Check this by comparing their slopes. Hence, the program should display the error message and request the user to enter non-collinear vertices 

·       If the three vertices (points) are not collinear and if the three sides are not equal, display warning message to user and request the user to continue.

·       If the normal height of the pyramid is zero or negative, the program should display the error message and request the user to enter valid height

·       If the normal height is greater than or equal to slant height, the program should display the error message and request the user to enter valid normal height and slant height.

 

· 3개의 꼭지점이 일직선을 이루므로 삼각형을 형성할 수 없다. 이들의 기울기를 비교하여 이것을 확인하십시오. 따라서, 프로그램은 오류 메시지를 표시하고 사용자에게 정점이 아닌 정점을 입력하도록 요청해야 한다. 
· 3개의 꼭지점(점)이 시준되지 않고 3면이 동일하지 않을 경우 사용자에게 경고 메시지를 표시하고 계속 진행하도록 요청한다.
· 피라미드의 정상 높이가 0 또는 음인 경우, 프로그램은 오류 메시지를 표시하고 사용자에게 유효한 높이를 입력하도록 요청해야 한다.
· 정상 높이가 경사 높이보다 크거나 같으면 프로그램에서는 오류 메시지를 표시하고 사용자에게 유효한 정상 높이와 경사 높이를 입력하도록 요청해야 한다.

 


 3.2)   SquarePyramid 

 has square shape at its base with upper left and lower left vertices as well as normal height and slant height. 

Functional requirement:

·       Request the user to enter the coordinates of the UpperLeft and LowerRight vertices of the square (base of the prism) and assign these values to member variables of this class

·       Request the user to enter the normal height of the square pyramid and assign this value to member variable of this class

·       Request the user to enter the slant height of the square pyramid and assign the value to member variable of this class

·       Compute the following quantities using the formula in part 3

ü  Compute the sides of the square from these vertices.

ü  Compute the base surface area of the square from its side

ü  Compute the perimeter of the square(base of the pyramid)

ü  Compute the lateral surface area of the triangular prism from the perimeter and slant height. 

ü  Compute the surface area of the triangular pyramid by adding its base area and lateral surface area. Note that pyramid has no top surface area. It has only base surface area.  

ü  Compute the volume of the square prism from base area and normal height of prism

·       Override the toString() method of SqarePrism class to display the information as shown in the output of the program(See part 2).

Non-functional requirement (exception handling):

·       If the upper left vertex UL(x1,y1) and lower right vertex LR(x4,y4) are the same, the program should display the error message and request the user to enter two differentvertices.

·       if x4 is less than  x1, the program should display the error message and request the user to enter correct vertices

·       If y4 is less than y1, the program should display the error message and request the user to enter correct vertices

·       If the height of the prism is zero or negative, the program should display the error message and request the user to enter valid height.

·       If the normal height is greater than or equal to slant height, the program should display the error message and request the user to enter valid normal height and slant height.


Summary: The program contains the following classes and interface

a)  Poin2D class: A concrete class called point2D class is needed to represent 2D points. The point2D class has X-coordinate and Y-coordinate member variables. The point2D class should be used as member field for 2D class (triangle and square) using the principle of composition (has-a relationship).

 

b)  “Shapes Interface: This interface has two methods

   getDistance() method to calculate the distance between two points in two dimensional coordinate space. This method computes the length of the side of an equilateral triangle and the sides of the square. 

   getArea() method to calculate the surface area of 2D shapes.

 

c)  Equilateral triangle and square classes: these classes implement Shape Interface

 

d)  Equilateral triangular prism and square prism classes extend Equilateral triangular and square classes, respectively.

 

e)  Equilateral triangular pyramid and square pyramid classes extend Equilateral triangular prism and square prism classes, respectively.

 

f) TestShapes class:

  The test class contains the main () method of the application.

  In this class, do the following operations for each of the six classes.

    1)  Write a code that request the user to create an object of a classes by using non-parametrized constructor(see the input format in part 2) 

    2)  Write a code that request the user to enter the member fields of the class and assign these values to member fields by appropriate setter () method of the class. 

    3)  Write a code that displays the output in the given format(see the out format in part 2) 

 

h)  Additional Implementation requirements that are common to all classes.

    1) Add the proper member fields for each class

    2) In each class, each member field should has setter and getter methods.

    3) Include exception handling codes that checks the validity of user input by writing your own exception handling class.

 

a) "Point2D" 클래스: 2D 포인트를 나타내려면 point2D class라는 콘크리트 클래스가 필요하다. 점2D 클래스는 X 좌표와 Y 좌표 멤버 변수가 있다. 포인트2D 클래스는 구성(has-aid 관계)의 원리를 이용하여 2D 클래스(삼각 및 사각형)의 멤버 필드로 사용해야 한다.

b) "Shapes" 인터페이스: 이 인터페이스에는 두 가지 방법이 있다.
getDistance() 방법을 사용하여 2차원 좌표 공간에서 두 점 사이의 거리를 계산한다. 이 방법은 정삼각형의 변과 정사각형의 변의 길이를 계산한다. 
getArea() 방법 2D 도형의 표면적을 계산하는 방법.

c) EquilateralTriangle 및 EquilateralSquare 클래스: 이 클래스는 형상 인터페이스 구현

d) EquilateralTrianglePrismEquilateralSquarePrism 클래스는 각각 정삼각형 및 정사각형 클래스를 확장한다.

e) EquilateralTrianglePyramidEquilateralSquarePyramid 클래스는 각각 정삼각형 프리즘과 정사각형 프리즘 클래스를 확장한다.

f) TestShapes 클래스:
시험 클래스에는 응용 프로그램의 주() 방법이 수록되어 있다.
이 클래스에서는 6개 클래스 각각에 대해 다음 작업을 수행하십시오.
1) 비모수 생성자를 이용하여 사용자에게 클래스의 객체를 생성하도록 요청하는 코드 작성(2부 입력 형식 참조) 
2) 사용자에게 클래스의 멤버 필드를 입력하도록 요청하는 코드를 작성하고 클래스의 적절한 setter() 방법에 따라 멤버 필드에 값을 할당한다. 
3) 주어진 형식으로 출력을 표시하는 코드를 작성한다(제2부의 출력 형식 참조) 

g) 모든 class에 공통적인 추가 구현 요건.
1) 클래스별 적합한 멤버 필드 추가
- 각 반에 set, get 등의 방법이 있어야 한다.
3) 자신만의 예외 처리 클래스를 작성하여 사용자 입력의 유효성을 확인하는 예외 처리 코드를 포함시킨다.

 

Q1. From the description of the problem, represent the problem by designing class diagrams using UML (unified modeling language). The class diagram should include the three relationships among classes, namely Uses-A relationship, Has-A relationship and IS-A relationship. The class diagram should also include the data type of member variables, the return type of member methods.

 

문제에 대한 설명으로부터, UML(Unified Modeling Language)을 사용하여 클래스 다이어그램을 설계함으로써 문제를 표현한다. 클래스 다이어그램에는 클래스 간의 세 가지 관계, 즉 Uses-A 관계, Has-A 관계 및 IS-A 관계가 포함되어야 한다. 클래스 다이어그램에는 멤버 변수의 데이터 유형, 멤버 방법의 반환 유형도 포함되어야 한다.

 

Q2. Using your class diagrams in Q1, implement your program by applying principle of inheritance using polymorphism.

 

Q1의 클래스 도표를 이용하여, 다형성을 이용한 상속의 원칙을 적용하여 프로그램을 실행한다.


'📌 java > Object-oriented Programming' 카테고리의 다른 글

java - ArrayList  (0) 2020.06.09
Homework_12  (0) 2020.06.02
Homework_10  (0) 2020.05.19
Homework_9  (0) 2020.05.13
java - use case diagram, scenario  (0) 2020.05.09
복사했습니다!