设计一个继承了抽象类GeometricObject 的新的Triangle类。绘制Triangle 类和GeometricObject 类的UML图并实现Triangle类。编写测试程序,提示用户输入三角形的三条边、颜色以及一个表明该三角形是否填充的布尔值。程序应该使用这些边来创建一个Triangle对象,并根据用户的输入来设置color和filled属性。程序应该显示面积、周长、颜色以及表明是否被填充的真或假的值。 点击复制后,将打开C知道体验页
时间: 2023-06-19 13:08:19 浏览: 87
GeometricObject类的UML图:
```
+GeometricObject()
+GeometricObject(color: String, filled: boolean)
+getColor(): String
+setColor(color: String): void
+isFilled(): boolean
+setFilled(filled: boolean): void
+getArea(): double
+getPerimeter(): double
+toString(): String
- color: String
- filled: boolean
```
Triangle类继承自GeometricObject类,所以Triangle类的UML图应该是:
```
+Triangle(side1: double, side2: double, side3: double)
+Triangle(side1: double, side2: double, side3: double, color: String, filled: boolean)
+getSide1(): double
+setSide1(side1: double): void
+getSide2(): double
+setSide2(side2: double): void
+getSide3(): double
+setSide3(side3: double): void
+getArea(): double
+getPerimeter(): double
+toString(): String
- side1: double
- side2: double
- side3: double
```
Triangle类的Java代码实现如下:
```java
public class Triangle extends GeometricObject {
private double side1;
private double side2;
private double side3;
public Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public Triangle(double side1, double side2, double side3, String color, boolean filled) {
super(color, filled);
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;
}
public double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
}
public double getPerimeter() {
return side1 + side2 + side3;
}
public String toString() {
return "Triangle: side1 = " + side1 + ", side2 = " + side2 + ", side3 = " + side3;
}
}
```
测试程序如下:
```java
import java.util.Scanner;
public class TestTriangle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter three sides of the triangle: ");
double side1 = input.nextDouble();
double side2 = input.nextDouble();
double side3 = input.nextDouble();
System.out.print("Enter a color for the triangle: ");
String color = input.next();
System.out.print("Is the triangle filled (true / false)? ");
boolean filled = input.nextBoolean();
Triangle triangle = new Triangle(side1, side2, side3, color, filled);
System.out.println("The area of the triangle is " + triangle.getArea());
System.out.println("The perimeter of the triangle is " + triangle.getPerimeter());
System.out.println("The color of the triangle is " + triangle.getColor());
System.out.println("The triangle is " + (triangle.isFilled() ? "filled" : "not filled"));
}
}
```