관리 메뉴

거니의 velog

230729 자바 과제 _ 클래스 다이어그램 구현 본문

대덕인재개발원_Java

230729 자바 과제 _ 클래스 다이어그램 구현

Unlimited00 2023. 7. 29. 16:25


[Point.java]

package ddit.chap07.point.vo;

public class Point {

	private int x;
	private int y;
	
	public Point() {}
	
	public Point(int x, int y) {
		this.x = x;
		this.y = y;
	}

	public int getX() {
		return x;
	}

	public void setX(int x) {
		this.x = x;
	}

	public int getY() {
		return y;
	}

	public void setY(int y) {
		this.y = y;
	}

	@Override
	public String toString() {
		return "(x : " + x + ", y : " + y + ")";
	}
	
}

[Circle.java]

package ddit.chap07.point.vo;

public class Circle extends Point {
	
	private int radius;

	public Circle() {}
	
	public Circle(int x, int y, int radius) {
		super(x, y);
		this.radius = radius;
	}

	public int getRadius() {
		return radius;
	}

	public void setRadius(int radius) {
		this.radius = radius;
	}

	@Override
	public String toString() {
		return super.toString() + " 좌표의  반지름 " + radius + "cm";
	}

}

[Rectangle.java]

package ddit.chap07.point.vo;

public class Rectangle extends Point {

	private int width;
	private int height;
	
	public Rectangle() {}
	
	public Rectangle(int x, int y, int width, int height) {
		super(x, y);
		this.width = width;
		this.height = height;
	}

	public int getWidth() {
		return width;
	}

	public void setWidth(int width) {
		this.width = width;
	}

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		this.height = height;
	}
	
	@Override
	public String toString() {
		return super.toString() + " 좌표의 밑변 " + width + "cm, 높이 " + height + "cm";
	}
	
}

[CircleController.java]

package ddit.chap07.point.controller;

import ddit.chap07.point.vo.Circle;

public class CircleController {

	private Circle c = new Circle();
	
	// 원의 넓이 메서드
	public String calcArea(int x, int y, int radius) {
		c.setX(x);
		c.setY(y);
		c.setRadius(radius);
		int area = (int)((c.getRadius() * c.getRadius()) * 3.1415926);
		return c.toString() + " 인 원의 넓이는 " + area + "㎠ 입니다.";
	}
	
	// 원의 둘레 메서드
	public String calcCircum(int x, int y, int radius) {
		c.setX(x);
		c.setY(y);
		c.setRadius(radius);
		int circum = (int)(2 * 3.1415926 * c.getRadius());
		return c.toString() + " 인 원의 둘레는 " + circum + "cm 입니다.";
	}
	
}

[RectangleController.java]

package ddit.chap07.point.controller;

import ddit.chap07.point.vo.Rectangle;

public class RectangleController {
	
	private Rectangle r = new Rectangle();
	
	// 사각형의 넓이 메서드
	public String calcArea(int x, int y, int width, int height) {
		r.setX(x);
		r.setY(y);
		r.setWidth(width);
		r.setHeight(height);
		int area = (r.getWidth() * r.getHeight());
		return r.toString() + " 인 사각형의 넓이는 " + area + "㎠ 입니다.";
	}
	
	// 사각형의 둘레 메서드
	public String calcPerimeter(int x, int y, int width, int height) {
		r.setX(x);
		r.setY(y);
		r.setWidth(width);
		r.setHeight(height);
		int perimeter = (r.getWidth() + r.getHeight()) * 2;
		return r.toString() + " 인 사각형의 둘레는 " + perimeter + "cm 입니다.";
	}
	
}

[PointMenu.java]

package ddit.chap07.point.view;

import java.util.Scanner;

import ddit.chap07.point.controller.CircleController;
import ddit.chap07.point.controller.RectangleController;

public class PointMenu {
	
	private Scanner sc = new Scanner(System.in);
	private CircleController cc = new CircleController();
	private RectangleController rc = new RectangleController();
	
	public void mainMenu() {
		System.out.println("====[메뉴]====");
		System.out.println("1. 원 메뉴 2. 사각형 메뉴 3. 프로그램 종료");
		System.out.print("입력 >> ");
		int view = Integer.parseInt(sc.nextLine());
		
		PointMenu pm = new PointMenu();
		
		while(true) {
			switch(view) {
			case 1 :
				pm.circleMenu();
				break;
			case 2 :
				pm.rectangleMenu();
				break;
			case 3 :
				System.out.println("프로그램을 종료합니다.");
				System.exit(0);
			default:
				System.out.println("잘못 입력하셨습니다.");
				pm.mainMenu();
			}
		}
	}
	
	public void circleMenu() {
		System.out.println("====[무엇이 궁금하세요?]====");
		System.out.println("1. 원의 둘레 2. 원의 넓이 3. 뒤로 돌아가기");
		System.out.print("입력 >> ");
		int view = Integer.parseInt(sc.nextLine());
		
		PointMenu pm = new PointMenu();
		
		while(true) {
			switch(view) {
			case 1 :
				pm.calcCircum();
				break;
			case 2 :
				pm.calcCircleArea();
				break;
			case 3 :
				pm.mainMenu();
				break;
			default:
				System.out.println("잘못 입력하셨습니다.");
				pm.circleMenu();
			}
		}
	}
	
	public void rectangleMenu() {
		System.out.println("====[무엇이 궁금하세요?]====");
		System.out.println("1. 사각형의 둘레 2. 사각형의 넓이 3. 뒤로 돌아가기");
		System.out.print("입력 >> ");
		int view = Integer.parseInt(sc.nextLine());
		
		PointMenu pm = new PointMenu();
		
		while(true) {
			switch(view) {
			case 1 :
				pm.calcPerimeter();
				break;
			case 2 :
				pm.calcRectArea();
				break;
			case 3 :
				pm.mainMenu();
				break;
			default:
				System.out.println("잘못 입력하셨습니다.");
				pm.rectangleMenu();
			}
		}
	}
	
	public void calcCircum() {
		System.out.print("x좌표 입력 >> ");
		int x = Integer.parseInt(sc.nextLine());
		System.out.print("y좌표 입력 >> ");
		int y = Integer.parseInt(sc.nextLine());
		System.out.print("반지름 입력 >> ");
		int radius = Integer.parseInt(sc.nextLine());
		
		System.out.println(new CircleController().calcCircum(x, y, radius));
		new PointMenu().mainMenu();
	}
	
	public void calcCircleArea() {
		System.out.print("x좌표 입력 >> ");
		int x = Integer.parseInt(sc.nextLine());
		System.out.print("y좌표 입력 >> ");
		int y = Integer.parseInt(sc.nextLine());
		System.out.print("반지름 입력 >> ");
		int radius = Integer.parseInt(sc.nextLine());
		
		System.out.println(new CircleController().calcArea(x, y, radius));
		new PointMenu().mainMenu();
	}
	
	public void calcPerimeter() {
		System.out.print("x좌표 입력 >> ");
		int x = Integer.parseInt(sc.nextLine());
		System.out.print("y좌표 입력 >> ");
		int y = Integer.parseInt(sc.nextLine());
		System.out.print("가로 입력 >> ");
		int width = Integer.parseInt(sc.nextLine());
		System.out.print("세로 입력 >> ");
		int height = Integer.parseInt(sc.nextLine());
		
		System.out.println(new RectangleController().calcPerimeter(x, y, width, height));
		new PointMenu().mainMenu();
	}
	
	public void calcRectArea() {
		System.out.print("x좌표 입력 >> ");
		int x = Integer.parseInt(sc.nextLine());
		System.out.print("y좌표 입력 >> ");
		int y = Integer.parseInt(sc.nextLine());
		System.out.print("가로 입력 >> ");
		int width = Integer.parseInt(sc.nextLine());
		System.out.print("세로 입력 >> ");
		int height = Integer.parseInt(sc.nextLine());
		
		System.out.println(new RectangleController().calcArea(x, y, width, height));
		new PointMenu().mainMenu();
	}

}

[Run.java]

package ddit.chap07.point.run;

import ddit.chap07.point.view.PointMenu;

public class Run {
	
	public static void main(String[] args) {
		
		new PointMenu().mainMenu();
		
	}

}

 

'대덕인재개발원_Java' 카테고리의 다른 글

230801 자바 강의  (0) 2023.08.01
230731 자바 강의  (0) 2023.07.31
230728 자바 강의  (0) 2023.07.29
230727 자바 강의  (0) 2023.07.29
230726 자바 강의  (0) 2023.07.26