도형의 성질 중에는 넓이과 둘레를 알아야한다.
그런 성질을 알 수 있는 인터페이스를 작성한다.
.
.
package InterfaceGeometric;
public interface GeometricObject {
public double getPerimeter();
public double getArea();
}
.
.
상위 인터페이스를 상속받을 원 클래스를 만든다.
.
.
package InterfaceGeometric;
import java.math.*;
public class Circle implements GeometricObject{
protected double radius = 1.0;
public Circle(double radius) {
this.radius = radius;
}
public double getPerimeter() {
return 2 * radius * Math.PI;
}
public double getArea() {
return Math.pow(radius , 2) + Math.PI;
}
@Override
public String toString() {
return "Circle [radius=" + radius + "]";
}
}
.
.
그리고 크기 조절할 수 있는 인터페이스를 만든다.
.
.
package InterfaceGeometric;
public interface Resizeable {
public void resize(int percent);
}
.
.
거기에다가 상위 인터페이스를 상속받을 크기가 조절가능한 원 클래스를 만든다.
인터페이스의 성질은 여러개를 상속 받을 수 있는 장점이 있다. 그걸 이용하여 도형의 성질과 도형의 크기 조절할 수 있는 인터페이스를 상속한다.
.
.
package InterfaceGeometric;
public class ResizeableCircle extends Circle implements Resizeable{
public ResizeableCircle(double radius) {
super(radius);
}
public void resize(int percent) {
radius *= percent/100f;
}
@Override
public String toString() {
return "ResizeableCircle [radius : " + super.radius + "]";
}
}
.
.
테스트를 해본다.
.
.
package InterfaceGeometric;
public class TestResizable {
public static void main(String[] args) {
Circle c1 = new Circle(3.5);
System.out.println(c1);
System.out.printf("c1의 둘레 : %f \n", c1.getPerimeter());
System.out.printf("c1의 넓이 : %f \n", c1.getArea());
ResizeableCircle c2 = new ResizeableCircle(10);
System.out.println(c2);
System.out.printf("c2의 둘레 : %f \n", c2.getPerimeter());
System.out.printf("c2의 넓이 : %f \n", c2.getArea());
c2.resize(90);
System.out.println("c2의 크기를 10%만큼 변경");
System.out.printf("c2의 둘레 : %f \n", c2.getPerimeter());
System.out.printf("c2의 넓이 : %f \n", c2.getArea());
}
}
.
.
728x90
반응형
'Java > 본격 Java 퀴즈 기초' 카테고리의 다른 글
[Java] HashSet을 이용하여 교집합, 차집합, 합집합 구해보기 (0) | 2020.07.13 |
---|---|
[Java] Stack을 이용하여 2진수 만들기 (0) | 2020.07.13 |
[Java] 점과 원 위치 이동하는 절차 인터페이스로 만들기 (0) | 2020.07.13 |
[Java] 도형 그리기 인터페이스 (0) | 2020.07.13 |
[Java] 원과 직사각형 추상클래스로 상속받아 구현하기 (0) | 2020.07.13 |