프로젝트명 : Homework2_OOP [문제 1] 다음과 같은 클래스를 작성하시오.
- 구현 클래스 다이어그램 (Class Diagram) Shape
- type : int
- height : double
- width : double
- color : String = “white”
- Shape()
- Shape(type:int, height:double, width:double)
- information() : String
- setter() / getter() SquareController
- s : Shape = new Shape()
- calcPerimeter(height:double, width:double) : double
- calcArea(height:double, width:double) : double
- paintColor(color:String) : void
- print() : String TriangleController
- s : Shape = new Shape()
- calcArea(height:double, width:double) : double
- paintColor(color:String) : void
- print() : String ShapeMenu
- sc : Scanner = new Scanner(System.in)
- scr : SquareController = new SquareController()
- tc : TriangleController = new TriangleController()
- inputMenu() : void
- triangleMenu() :void
- squareMenu():void
- inputSize(type:int, menuNum:int):void
- printInformation(type:int):void Run
- main(args:String[]) : void
- 구현 클래스 설명 Package명 Class명 Method 설명 com.kh.hw. shape.model.vo Shape +Shape() 기본 생성자
- Shape(type:int, height:double, width:double) 매개변수 있는 생성자 +getXXX() 저장된 데이터를 불러오 는 메소드 +setXXX() 데이터를 변수에 저장하 는 메소드 +information() : String 높이, 너비, 색깔을 반환 하는 메소드 com.kh.hw. shape.controller SquareController +calcPerimeter(height:double, width:double) : double 모양 타입 번호와 받은 매개변수를 매개변수 있 는 생성자로 초기화 시킨 후 둘레 반환 둘레: 너비2 + 높이2 +calcArea(height:double, width:double) : double 모양 타입 번호와 받은 매개변수를 매개변수 있 는 생성자로 초기화 시킨 후 넓이 반환 넓이 : 너비 * 높이 +paintColor(color:String) : void setter를 이용해 받아온 매개변수로 값 변경 +print():String 어떤 모양인지와 Shape 의 information()메소드의 반환 값 합쳐 함께 반환 com.kh.hw. shape.controller TriangleController +calcArea(height:double, width:double) : double 모양 타입 번호와 받은 매개변수를 매개변수 있 는 생성자로 초기화 시킨 후 넓이 반환 넓이 : 너비 * 높이 / 2 +paintColor(color:String) : void setter를 이용해 받아온 매개변수로 값 변경 +print():String 어떤 모양인지와 Shape 의 information()메소드의 반환 값 합쳐 함께 반환 com.kh.hw. shape.view ShapeMenu +inputMenu():void 삼각형과 사각형을 선택 하게 하는 메소드 +triangleMenu() : void 삼각형 메뉴 출력 메소드 +squareMenu():void 사각형 메뉴 출력 메소드 +inputSize(type:int, menuNum:int):void 너비와 높이를 받아 요청 사항을 처리하거나 색깔 을 받아 요청사항을 처리 하는 메소드 +printInformation(type:int) :void 매개변수에 따라 삼각형/ 사각형의 정보를 출력하 는 메소드 com.kh.hw. shape.run Run +main(args:String[]):void ShapeMenu 객체를 생성 후 inputMenu() 실행
- class 명과 method 명은 변경 하지 않는다.
- 모든 클래스 변수의 getter, setter 함수는 직접 구현한다
뤼튼
AI 과제와 업무
아래는 주어진 요구 사항을 기반으로한 Java 클래스를 작성한 것입니다.
프로젝트 구조
src/
└── com/
└── kh/
└── hw/
├── shape/
│ ├── controller/
│ │ ├── SquareController.java
│ │ └── TriangleController.java
│ ├── model/
│ │ └── vo/
│ │ └── Shape.java
│ └── view/
│ └── ShapeMenu.java
└── run/
└── Run.java
Shape.java
java
package com.kh.hw.shape.model.vo;
public class Shape {
private int type;
private double height;
private double width;
private String color = "white";
public Shape() {}
public Shape(int type, double height, double width) {
this.type = type;
this.height = height;
this.width = width;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String information() {
return "Height: " + height + ", Width: " + width + ", Color: " + color;
}
}
SquareController.java
java
package com.kh.hw.shape.controller;
import com.kh.hw.shape.model.vo.Shape;
public class SquareController {
private Shape s = new Shape();
public double calcPerimeter(double height, double width) {
s = new Shape(4, height, width); // Assuming type 4 for square
return 2 * (height + width);
}
public double calcArea(double height, double width) {
s = new Shape(4, height, width); // Assuming type 4 for square
return height * width;
}
public void paintColor(String color) {
s.setColor(color);
}
public String print() {
return "Square: " + s.information();
}
}
TriangleController.java
java
package com.kh.hw.shape.controller;
import com.kh.hw.shape.model.vo.Shape;
public class TriangleController {
private Shape s = new Shape();
public double calcArea(double height, double width) {
s = new Shape(3, height, width); // Assuming type 3 for triangle
return 0.5 * height * width;
}
public void paintColor(String color) {
s.setColor(color);
}
public String print() {
return "Triangle: " + s.information();
}
}
ShapeMenu.java
java
package com.kh.hw.shape.view;
import com.kh.hw.shape.controller.SquareController;
import com.kh.hw.shape.controller.TriangleController;
import java.util.Scanner;
public class ShapeMenu {
private Scanner sc = new Scanner(System.in);
private SquareController scr = new SquareController();
private TriangleController tc = new TriangleController();
public void inputMenu() {
while (true) {
System.out.println("1. 삼각형");
System.out.println("2. 사각형");
System.out.println("9. 프로그램 종료");
System.out.print("메뉴 번호: ");
int menuNum = sc.nextInt();
switch (menuNum) {
case 1:
triangleMenu();
break;
case 2:
squareMenu();
break;
case 9:
return;
default:
System.out.println("잘못된 번호입니다. 다시 입력해주세요.");
}
}
}
public void triangleMenu() {
System.out.print("높이: ");
double height = sc.nextDouble();
System.out.print("너비: ");
double width = sc.nextDouble();
System.out.println("삼각형의 넓이: " + tc.calcArea(height, width));
System.out.print("색깔을 입력하세요: ");
String color = sc.next();
tc.paintColor(color);
System.out.println(tc.print());
}
public void squareMenu() {
System.out.print("높이: ");
double height = sc.nextDouble();
System.out.print("너비: ");
double width = sc.nextDouble();
System.out.println("사각형의 둘레: " + scr.calcPerimeter(height, width));
System.out.println("사각형의 넓이: " + scr.calcArea(height, width));
System.out.print("색깔을 입력하세요: ");
String color = sc.next();
scr.paintColor(color);
System.out.println(scr.print());
}
public void inputSize(int type, int menuNum) {
System.out.print("높이: ");
double height = sc.nextDouble();
System.out.print("너비: ");
double width = sc.nextDouble();
if (type == 3) { // 삼각형
if (menuNum == 1) {
System.out.println("삼각형의 넓이: " + tc.calcArea(height, width));
} else if (menuNum == 2) {
System.out.print("색깔을 입력하세요: ");
String color = sc.next();
tc.paintColor(color);
}
} else if (type == 4) { // 사각형
if (menuNum == 1) {
System.out.println("사각형의 둘레: " + scr.calcPerimeter(height, width));
System.out.println("사각형의 넓이: " + scr.calcArea(height, width));
} else if (menuNum == 2) {
System.out.print("색깔을 입력하세요: ");
String color = sc.next();
scr.paintColor(color);
}
}
}
public void printInformation(int type) {
if (type == 3) {
System.out.println(tc.print());
} else if (type == 4) {
System.out.println(scr.print());
}
}
}
Run.java
java
package com.kh.hw.shape.run;
import com.kh.hw.shape.view.ShapeMenu;
public class Run {
public static void main(String[] args) {
ShapeMenu menu = new ShapeMenu();
menu.inputMenu();
}
}
이 코드는 주어진 요구 사항에 맞추어 작성된 클래스들입니다. 각 클래스는 주어진 기능을 수행하며, Run 클래스에서 ShapeMenu 객체를 생성하고 inputMenu() 메소드를 호출하여 프로그램을 실행합니다.
'Java' 카테고리의 다른 글
자바 객체 배열 (0) | 2024.06.23 |
---|---|
KH 교육원 Java 클래스 9일차 (0) | 2024.06.21 |
KH 교육과정 (7일차) 자바_ 배열 실습 및 2차원 배열 (0) | 2024.06.19 |
KH 교육원 개발자 교육과정 (6일차) 배열 실습 (0) | 2024.06.18 |
KH 정보교육원 (5일차) 수업_배열 (0) | 2024.06.18 |