按以下要求编写一个完整的 Java 程序:
(1)编写抽象类 GeometricObject 类;
• 该类包括 String型的变量 color 和 boolean 型的 filled 变量;
•该类有一个默认的构造方法;
•两个抽象方法,计算面积 getAreaO和计算周长 getPerimeter();
• 两个属性的访问器和修改器;
(2) 编写 Triangle 类继承 GeometricObject 类,该类包括:
•三个名为 sidel、side2、side3 的 double 型数据域表示该三角形的三条边,默认值为
1.0;
• 一个无参构造方法创建默认的三角形;
•一个能创建带指定 sidel、side2、side3 的三角形的构造方法;
• 所有三个数据域的访间器方法;
•一个名为getArea0的方法返回这个三角形的面积。三角形的面积计算公式为:
S=(边 1+边 2+边32
面积= s(s-边1(s 边2)(s 边3)
•一个名为 getPerimeter0)的方法返回这个三角形的周长;
•一个名为 toString()的方法返回这个三角形的字符串描述。toSting()方法的实现如下
: return "Triangle:side1 =" + side 1 + " side2 =" + side2 + " side3 =" + side3;
(3)编写测试类,提示用户从键盘输入三角形的三条边、颜色以及一个 boolean 值表明该三角形是否填充,程序应该使用输入创建一个具有这些属性的三角形,并将三角形的边长、面积、周长、颜色以及是否填充输出。
abstract class GeometricObject {
private String color;
private boolean filled;
public GeometricObject() {
}
public abstract double getArea();
public abstract double getPerimeter();
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public boolean getFilled() {
return filled;
}
public void setFilled(boolean filled) {
this.filled = filled;
}
}
// (2) Triangle 类继承 GeometricObject 类
class Triangle extends GeometricObject {
private double side1, side2, side3;
public Triangle() {
side1 = side2 = 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 double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
@Override
public double getArea() {
double s = (side1 + side2 + side3) / 2;
return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
@Override
public double getPerimeter() {
return side1 + side2 + side3;
}
@Override
public String toString() {
return "Triangle: side1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;
}
}
// (3) 测试类
import java.util.Scanner;
public class TestTriangle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入三角形的三条边:");
double side1 = scanner.nextDouble();
double side2 = scanner.nextDouble();
double side3 = scanner.nextDouble();
System.out.println("请输入三角形的颜色:");
String color = scanner.next();
System.out.println("请输入一个布尔值,表示三角形是否填充:");
boolean filled = scanner.nextBoolean();
Triangle triangle = new Triangle(side1, side2, side3);
triangle.setColor(color);
triangle.setFilled(filled);
System.out.println("三角形的边长为:" + triangle.getSide1() + ", " + triangle.getSide2() + ", " + triangle.getSide3());
System.out.println("三角形的面积为:" + triangle.getArea());
System.out.println("三角形的周长为:" + triangle.getPerimeter());
System.out.println("三角形的颜色为:" + triangle.getColor());
System.out.println("三角形是否填充:" + (triangle.isFilled() ? "是" : "否"));
}
}