본문 바로가기
☕Java/Java 프로젝트

[20210520] Java 인터페이스 프로젝트

by 캔 2021. 5. 21.

클래스 다이어그램

Shape 인터페이스를 자식 클래스인 Circle, Triangle, Rectangle이 상속받는 구조로 되어있는 프로젝트이다. Shape 인터페이스에서는 draw()와 save()라는 추상 메서드를 가지고 있으며, 각각의 자식 클래스들이 두 메서드를 오버라이드하여 사용한다. 각 클래스들은 radius, width, height, area를 private으로 선언하였다.

//Circle.java

package Day8;

public class Circle implements Shape {
	private double area;
	private double radius;
	
	public Circle(double radius) {
		this.radius = radius;
	}
	
	@Override
	public void draw() {
		System.out.println("원을 그립니다. 원의 넓이는:" + (radius * radius * Math.PI) + "입니다.");
	}
	
	@Override
	public void save() {
		double a = (radius * radius * Math.PI);
		setArea(a);
	}
	
	public void setArea(double area) {
		this.area = area;
	}
	
	public double getRadius() {
		return radius;
	}

	public double getArea() {
		return area;
	}
}

//Triangle.java

package Day8;

public class Triangle implements Shape {
	private double area;
	private double width, height;
	
	public Triangle(double width, double height) {
		this.width = width;
		this.height = height;
	}

	@Override
	public void draw() {
		System.out.println("삼각형을 그립니다. 삼각형의 넓이는:" + ((width * height) / 2) + "입니다.");
	}

	@Override
	public void save() {
		double a = ((width * height) / 2);
		setArea(a);
	}
	
	public void setArea(double area) {
		this.area = area;
	}

	public double getWidth() {
		return width;
	}
	
	public double getHeight() {
		return height;
	}
	
	public double getArea() {
		return area;
	}
}
//Rectangle.java

package Day8;

public class Rectangle implements Shape {
	private double area;
	private double width, height;
	
	public Rectangle(double width, double height) {
		this.width = width;
		this.height = height;
	}
	
	@Override
	public void draw() {
		System.out.println("사각형을 그립니다. 사각형의 넓이는:" + (width * height) + "입니다.");
	}
	
	@Override
	public void save() {
		double a = (width * height);
		setArea(a);
	}

	public void setArea(double area) {
		this.area = area;
	}

	public double getWidth() {
		return width;
	}
	
	public double getHeight() {
		return height;
	}
	
	public double getArea() {
		return area;
	}
}

draw 메서드는 원의 경우 radius를, 삼각형과 사각형의 경우 width와 height를 객체 생성 시 입력받아 그 면적을 구해 메시지를 출력하는 메서드이다. save 메서드의 경우 면적을 계산하여 각각의 도형 클래스의 private으로 선언된 변수를 setter를 이용하여 재설정 및 저장하는 메서드이다.