创建图形面积周长计算器类(ShapeCalculate),ShapeCalculate类中定义一个求面积方法,形参是Shape类的引用,接收不同图形对象,再定义一个求周长方法,接收不同图形对象,求不同图形对象的周长。
时间: 2024-11-12 22:45:12 浏览: 27
创建一个名为`ShapeCalculate`的类,用于计算形状的面积和周长。这个类设计时采用策略模式的思想,通过接受`Shape`类型的对象作为参数,实现了对多种形状通用的操作。以下是`ShapeCalculate`类的基本结构:
```java
public class ShapeCalculate {
// 定义一个通用方法,形参为Shape类型的引用
public double calculateArea(Shape shape) {
return shape.getArea(); // 调用shape对象的面积计算方法
}
// 同样定义一个通用方法,计算周长
public double calculatePerimeter(Shape shape) {
return shape.getPerimeter(); // 调用shape对象的周长计算方法
}
}
// 抽象Shape类,所有具体形状都需继承它
abstract class Shape {
abstract double getArea(); // 每种形状需要实现自己的面积计算方法
abstract double getPerimeter(); // 每种形状需要实现自己的周长计算方法
}
// 具体形状如Circle、Rectangle等都需要继承Shape,并实现getArea()和getPerimeter()方法
class Circle extends Shape {
private final double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
double getArea() {
return Math.PI * radius * radius;
}
@Override
double getPerimeter() {
return 2 * Math.PI * radius;
}
}
class Rectangle extends Shape {
private final double width;
private final double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
double getArea() {
return width * height;
}
@Override
double getPerimeter() {
return 2 * (width + height);
}
}
// 使用示例
public static void main(String[] args) {
Shape circle = new Circle(5);
Shape rectangle = new Rectangle(10, 8);
ShapeCalculate calculator = new ShapeCalculate();
System.out.println("Circle area: " + calculator.calculateArea(circle));
System.out.println("Circle perimeter: " + calculator.calculatePerimeter(circle));
System.out.println("Rectangle area: " + calculator.calculateArea(rectangle));
System.out.println("Rectangle perimeter: " + calculator.calculatePerimeter(rectangle));
}
```
阅读全文