(三角形类)设计一个扩展自抽象类GeometricObject的新的Triangle类。实现Triangle类,并编写一个测试程序,提示用户输入三角形的三条边,一种颜色以及一个表明该三角形是否填充的布尔值。程序应该根据用户的输入,使用这些边以及颜色和是否填充的信息,创建一个Triangle对象。程序应该显示面积,周长,颜色以及真或者假来表明是否被填充。
求分析与设计思路
(三角形类)设计一个扩展自抽象类GeometricObject的新的Triangle类。实现Triangle类,并编写一个测试程序,提示用户输入三角形的三条边,一种颜色以及一个表明该三角形是否填充的布尔值。程序应该根据用户的输入,使用这些边以及颜色和是否填充的信息,创建一个Triangle对象。程序应该显示面积,周长,颜色以及真或者假来表明是否被填充。
求分析与设计思路
package homework04;
public abstract class GeometricObject {
private String color = "white";
private boolean filled;
private java.util.Date dateCreated;
protected GeometricObject() {
dateCreated = new java.util.Date();
}
protected GeometricObject(String color, boolean filled) {
dateCreated = new java.util.Date();
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 java.util.Date getDateCreated() {
return dateCreated;
}
public String toString() {
return "created on " + dateCreated.toLocaleString() + "\ncolor: " + color + " and filled: " + filled;
}
public abstract double getArea();
public abstract double getPerimeter();
}
package homework04;
/*
* 三角形实体类继承几何图形类
*/
public class Triangle extends GeometricObject {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public Triangle() {
super();
}
public Triangle(double side1, double side2, double side3) {
super();
// 如果边长为负 抛出自定义异常 打印("边长不能为负")
if (side1 < 0 || side2 < 0 || side3 < 0)
throw new SideIsNegativeException("边长不能为负");
// 如果有任何两边之和不大于第三边 抛出自定义异常 打印"不能构成三角形"
if (!((side1 + side2) > side3 && (side2 + side3) > side1 && (side1 + side3) > side2))
throw new ProduceTriangleException("此三边无法构造三角形");
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
public double getPerimeter() {
return side1 + side2 + side3;
}
// 计算面积
public double getArea() {
double p = (side1 + side2 + side3) / 2;
// 利用海伦公式计算三角形面积
return Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
}
@Override
public String toString() {
return super.toString() + "\nTriangle: side1 = " + side1 + " side2 = " + side2 + " side3 = " + side3;
}
}
package homework04;
public class IllegalTriangleException extends IllegalArgumentException{
private static final long serialVersionUID = 6951590110509697033L;
public IllegalTriangleException(String s) {
super(s);
}
}
package homework04;
/*
* 自定义异常 三边不满足构建三角形的条件
*/
public class ProduceTriangleException extends IllegalArgumentException{
//序列化
private static final long serialVersionUID = 1683443194340418835L;
public ProduceTriangleException(String s) {
super(s);
// TODO Auto-generated constructor stub
}
}
package homework04;
/*
* 自定义异常 边长为负*
*/
public class SideIsNegativeException extends IllegalArgumentException{
//序列化
private static final long serialVersionUID = -6372928593269244107L;
public SideIsNegativeException(String s) {
super(s);
// TODO Auto-generated constructor stub
}
}