1)创建一个接口Graph, 有三个抽象方法: <1>计算周长的getPerimeter(),返回值是double类型; <2>计算面积的getArea(),返回值double;<3>获取图形名称的show(), 返回值是String 。 (2)接口的实现类有Triangle(等边三角形)和Circle(圆形),实现了Graph类。三角形有属性:名字,边长;圆有属性:名字,半径, π取3.14。 (3)Triangle 和 Circle分别有构造方法, 等边三角形的构造方法入参是名字、边长。圆的构造方法入参是名字,半径。 (4)例如:调用等边三角形的show()方法,显示它的“名字”属性。调用getArea()获取面积, 公式为 1/2 * 边长 * (√3 /2 * 边长)。调用getPerimeter()获取周长。 (5)有一个月饼制作厂MoonCakeFactory,可以根据用户的需求,制作各个形状的月饼。有Test4类,类中只有main方法。
时间: 2024-02-25 16:56:35 浏览: 190
接口的应用Shape类,Rectangle、Triangle、Square
好的,您的问题是如何创建一个接口Graph,以及如何实现它的两个子类Triangle和Circle,并且如何计算它们的周长和面积,对吧?
这里是一个可能的实现:
```java
public interface Graph {
double getPerimeter(); // 计算周长
double getArea(); // 计算面积
String show(); // 获取图形名称
}
public class Triangle implements Graph {
private String name;
private double side;
public Triangle(String name, double side) {
this.name = name;
this.side = side;
}
@Override
public double getPerimeter() {
return 3 * side;
}
@Override
public double getArea() {
return 0.5 * side * side * Math.sqrt(3) / 4;
}
@Override
public String show() {
return name;
}
}
public class Circle implements Graph {
private String name;
private double radius;
public Circle(String name, double radius) {
this.name = name;
this.radius = radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public String show() {
return name;
}
}
public class MoonCakeFactory {
public Graph createGraph(String name, String type, double... params) {
if (type.equals("Triangle")) {
return new Triangle(name, params[0]);
} else if (type.equals("Circle")) {
return new Circle(name, params[0]);
} else {
throw new UnsupportedOperationException("Unsupported graph type: " + type);
}
}
}
public class Test4 {
public static void main(String[] args) {
MoonCakeFactory factory = new MoonCakeFactory();
Graph triangle = factory.createGraph("等边三角形", "Triangle", 5);
System.out.println(triangle.show() + "的周长是:" + triangle.getPerimeter() + ",面积是:" + triangle.getArea());
Graph circle = factory.createGraph("圆形", "Circle", 3);
System.out.println(circle.show() + "的周长是:" + circle.getPerimeter() + ",面积是:" + circle.getArea());
}
}
```
在这个实现中,我们定义了一个接口Graph,它有三个抽象方法:getPerimeter()、getArea()和show(),分别用于计算周长、面积和获取图形名称。然后我们定义了两个实现类Triangle和Circle,分别对应等边三角形和圆形。它们都实现了Graph接口,并且实现了相应的方法。
在MoonCakeFactory类中,我们定义了一个createGraph()方法,用于根据用户的需求创建相应的图形。它接受三个参数:名称、类型和参数(可变长度的数组)。如果类型是Triangle,就创建一个Triangle对象;如果类型是Circle,就创建一个Circle对象。如果类型不支持,就抛出UnsupportedOperationException异常。
最后,在Test4类中,我们演示了如何使用MoonCakeFactory来创建等边三角形和圆形,并且计算它们的周长和面积。注意,我们使用了Graph接口来引用Triangle和Circle对象,这样可以方便地调用它们的共同方法。
阅读全文