7장 상속 과제 섹션 3에서 만들었던 도형 관련 클래스인 Shape 클래스를 추상클래스로 만들어 보자.

package practice3;
public abstract class Shape implements Comparable<Shape> {
String name;
public abstract double area();
public abstract double perimeter();
@Override
public int compareTo(Shape o) {
if (area() > o.area()) {
return 1;
} else if (area() < o.area()) {
return -1;
} else {
return 0;
}
}
@Override
public String toString() {
return String.format("도형의 종류: %s, 둘레: %f, 넓이: %f", name, perimeter(), area());
}
}
package practice3;
public class Circle extends Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return radius * radius * Math.PI;
}
@Override
public double perimeter() {
return radius * 2.0 * Math.PI;
}
public String toString() {
return String.format("도형의 종류: 원, 둘레: %.2f㎝, 넓이: %.2f㎠", perimeter(), area());
}
}
package practice3;
public class Rectangle extends Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
@Override
public double perimeter() {
return (width + height) * 2.0;
}
public String toString() {
return String.format("도형의 종류: 사각형, 둘레: %.2f㎝, 넓이: %.2f㎠", perimeter(), area());
}
}
package practice3;
public class Triangle extends Shape {
private double side;
public Triangle(double side) {
this.side = side;
}
@Override
public double area() {
return Math.sqrt(3) * side * side / 4.0;
}
@Override
public double perimeter() {
return side * 3.0;
}
public String toString() {
return String.format("도형의 종류: 삼각형, 둘레: %.2f㎝, 넓이: %.2f㎠", perimeter(), area());
}
}
package practice3;
import java.util.Arrays;
public class ShapeTest {
public static void main(String[] args) {
Shape[] shapes = new Shape[7];
shapes[0] = new Circle(1.0);
shapes[1] = new Triangle(2.0);
shapes[2] = new Rectangle(2.0,3.0);
shapes[3] = new Triangle(3.0);
shapes[4] = new Rectangle(5.0,2.3);
shapes[5] = new Circle(2.5);
shapes[6] = new Circle(1.3);
System.out.println("<도형들을 넓이 기준으로 정렬 하기 전>");
for (Shape s : shapes) {
System.out.println(s);
}
Arrays.sort(shapes);
System.out.println();
System.out.println("<도형들을 넓이 기준으로 정렬 한 후>");
for (Shape s : shapes) {
System.out.println(s);
}
}
}

'Java > 과제' 카테고리의 다른 글
chapter 08) 인터페이스example - Book 클래스 (0) | 2022.08.31 |
---|---|
chapter 08) 인터페이스example - BankAccount 클래스 변경 (0) | 2022.08.31 |
chapter 07) 상속example - 은행 관련 클래스 확장하기 (0) | 2022.08.29 |
chapter 07) 상속example - 도형 관련 클래스 만들기 (0) | 2022.08.26 |
chapter 07) 상속example - Student 클래스 만들기 (0) | 2022.08.26 |