aiaiask.com©

开花即结果 提问即答案

TestGeometricObject1测试类设计:随机生成对象、输出信息与方法测试要求
原始问题:

TestGeometricObject1测试类设计:随机生成对象、输出信息与方法测试要求

以下是TestGeometricObject1的设计实现:

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方法,它们分别用于计算对象的周长和面积。这些方法的实现可以参考以下代码:

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方法,但只输出了颜色和是否填充这两个属性。

TestGeometricObject1测试类设计:随机生成对象、输出信息与方法测试要求
AI / 模型DeepSeek
时间 / DATEJune 13, 2023, 5:37 PM
语言zh-CN
IP / 区域未知