测试类TestGeometricObject1设计要求如下: ■ 一个能随机生成Circle类和Triangle类对象的静态方法 GeometricObject[] RandomCreateGeo
分享
54773
以下是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;
}
```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;
}