14
06月
2023
以下是TestGeometricObject1的设计实现:
```java
import java.util.Random;
public class TestGeometricObject1 {
public static void main(String[] args) {
GeometricObject[] objects = RandomCreateGeometricObject();
for (GeometricObject object : objects) {
System.out.println(object.toString());
System.out.println("周长:" + object.getPerimeter());
System.out.println("面积:" + object.getArea());
System.out.println();
}
}
public static GeometricObject[] RandomCreateGeometricObject() {
Random random = new Random();
GeometricObject[] objects = new GeometricObject[10];
for (int i = 0; i < objects.length; i++) {
if (random.nextBoolean()) {
objects[i] = new Circle(random.nextDouble() * 10);
} else {
objects[i] = new Triangle(random.nextDouble() * 10, random.nextDouble() * 10, random.nextDouble() * 10);
}
}
return objects;
}
}
```
在main方法中,我们首先调用RandomCreateGeometricObject方法生成一个随机的GeometricObject数组,然后遍历数组,输出每个对象的基本信息、周长和面积。
RandomCreateGeometricObject方法中,我们使用Java自带的Random类生成一个随机数,然后根据随机数的值来决定生成Circle对象还是Triangle对象。最后将生成的对象存入数组中并返回。
除了RandomCreateGeometricObject方法外,GeometricObject类中还有getPerimeter和getArea方法,它们分别用于计算对象的周长和面积。这些方法的实现可以参考以下代码:
```java
public abstract class GeometricObject {
private String color;
private boolean filled;
public GeometricObject() {
color = "white";
filled = false;
}
public GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean isFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
public abstract double getPerimeter();
public abstract double getArea();
@Override
public String toString() {
return "颜色:" + color + ",是否填充:" + filled;
}
}
public class Circle extends GeometricObject {
private double radius;
public Circle() {
radius = 1.0;
}
public Circle(double radius) {
this.radius = radius;
}
public Circle(double radius, String color, boolean filled) {
super(color, filled);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public double getPerimeter() {
return 2 * Math.PI * radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
@Override
public String toString() {
return "圆形,半径:" + radius + "," + super.toString();
}
}
public class Triangle extends GeometricObject {
private double side1;
private double side2;
private double side3;
public Triangle() {
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
public Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public double getSide2() {
return side2;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public double getSide3() {
return side3;
}
public void setSide3(double side3) {
this.side3 = side3;
}
@Override
public double getPerimeter() {
return side1 + side2 + side3;
}
@Override
public double getArea() {
double p = (side1 + side2 + side3) / 2;
return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
}
@Override
public String toString() {
return "三角形,边长:" + side1 + "、" + side2 + "、" + side3 + "," + super.toString();
}
}
```
在GeometricObject类中,我们定义了一个抽象方法getPerimeter和一个抽象方法getArea,这两个方法分别用于计算对象的周长和面积。由于GeometricObject类是一个抽象类,因此这两个方法没有具体的实现,而是留给子类去实现。
在Circle类和Triangle类中,我们分别实现了getPerimeter和getArea方法。对于Circle类,周长是2πr,面积是πr²;对于Triangle类,周长是三条边的和,面积使用海伦公式计算。
最后,在Circle类和Triangle类中,我们重写了toString方法,用于输出对象的基本信息。在GeometricObject类中,我们也重写了toString方法,但只输出了颜色和是否填充这两个属性。
免责声明:本内容由金宣创作助手生成,可能存在逻辑不清、乱码等问题,点这里>>使用AI金宣助手高级版(Super),更聪明、更完整、无乱码!
以上内容除特别注明外均来源于网友提问、金宣助手回答,权益归原著者所有,本站仅作效果演示和欣赏之用;
本文标题: 测试类TestGeometricObject1设计要求如下: ■ 一个能随机生成Circle类和Triangle类对象的静态方法 GeometricObjec
本文网址: https://www.nhwlfw.com/news-read-3461.html
直通道: 金宣助手
延伸阅读
- 如何更好地应对公司的人才流动和管理挑战?
- 如何处理工作中的冲突和合作问题?
- 考试问题分析总结以及学习方法。以及学习的目标和短期的目标
- 社会服务与社区建设
- 曲线x=√2cost,y=sint,z=sint,在点(√2,0,0)处的法平面方程为 Ax + By + Cz + D =0.若 B