Java

자바 프로젝트

최종군 2024. 6. 20. 21:52

프로젝트명 : Homework2_OOP [문제 1] 다음과 같은 클래스를 작성하시오.

  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
  1. 구현 클래스 설명 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() 메소드를 호출하여 프로그램을 실행합니다.