1)设计一个名为Geometric的几何图形的抽象类,该类包括:

①两个名为color、filled属性分别表示图形颜色和是否填充。

②一个无参的构造方法。

③一个能创建指定颜色和填充值的构造方法。

④一个名为getArea()的抽象方法,返回图形的面积。

⑤一个名为getPerimeter()的抽象方法,返回图形的周长。

⑥一个名为toString()的方法,返回该几何图形的字符串描述。

 1 package zuoye;
 2 
 3 abstract class Geometric {
 4 private Color color;
 5 private  boolean filled;
 6 public Geometric() {
 7     // TODO Auto-generated constructor stub
 8 }
 9 public Geometric(Color color, boolean filled) {
10     this.color = color;
11     this.filled = filled;
12 }
13   abstract double  getAear(); 
14   abstract double  getPerimeter();
15 @Override
16 public String toString() {
17     return "Geometric [color=" + color + ", filled=" + filled + ", getAear()=" + getAear() + ", getPerimeter()="
18             + getPerimeter() + "]";
19 }
20 
21 }

 

 

 

 

 

(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:

①一个名为radius的double类型私有属性表示半径。

②一个无参构造方法创建圆。

③一个能创建指定radius的圆的构造方法。

④radius的访问器方法。

⑤一个名为getArea()的方法,返回该圆的面积。

⑥一个名为getPerimeter()的方法,返回圆的周长。

⑦一个名为toString()的方法,返回该圆的字符串描述。

 1 package zuoye;
 2 
 3 public class Circle extends Geometric {
 4  private double radius;
 5  private static final double PI=3.1415926;
 6  public Circle() {
 7     // TODO Auto-generated constructor stub
 8 }
 9  
10     public Circle(double radius) {
11     this.radius = radius;
12 } 
13 
14     public double getRadius() {
15         return radius;
16     }
17 
18     public void setRadius(double radius) {
19         this.radius = radius;
20     }
21 
22     double getAear() {
23         // TODO Auto-generated method stub
24         return radius*radius*PI;
25     }
26 
27     double getPerimeter() {
28         // TODO Auto-generated method stub
29         return 2*radius*PI;
30     }
31 
32     @Override
33     public String toString() {
34         return "Circle [radius=" + radius + ", getAear()=" + getAear() + ", getPerimeter()=" + getPerimeter() + "]";
35     }
36 
37 }

 

 

 

 

(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:

①两个名为side1、side2的double类型私有属性表示矩形的两条边。

②一个无参构造方法创建矩形。

③一个能创建指定sidel和side2的矩形的构造方法。

④side1和side2的访问器方法。

⑤一个名为getArea()的方法,返回该矩形的面积。

⑥一个名为gelPerimeter()的方法,返回该矩形的周长。

⑦一个名为toString()的方法,返回该矩形的字符串描述。

 1 package zuoye;
 2 
 3 public class Rectangle extends Geometric {
 4 private double side1;
 5 private double side2;
 6 public Rectangle() {
 7     // TODO Auto-generated constructor stub
 8 }
 9 public Rectangle(double side1, double side2) {
10     this.side1 = side1;
11     this.side2 = side2;
12 }
13 public double getSide1() {
14     return side1;
15 }
16 public void setSide1(double side1) {
17     this.side1 = side1;
18 }
19 public double getSide2() {
20     return side2;
21 }
22 public void setSide2(double side2) {
23     this.side2 = side2;
24 }
25 double getAear() {
26     // TODO Auto-generated method stub
27     return side1*side2 ;
28 }
29 
30 double getPerimeter() {
31     // TODO Auto-generated method stub
32     return (side1+side2)*2;
33 }
34 
35 public String toString() {
36     return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", getAear()=" + getAear() + ", getPerimeter()="
37             + getPerimeter() + "]";
38 }
39 }

 

 

 

(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:

①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。

②一个无参构造方法创建三角形。

③一个能创建指定side1,side2和side3的矩形的构造方法。

④side1,side2和side3的访问器方法。

⑤一个名为getArea()的方法,返回该三角形的面积。

⑥一个名为getPerimeter()的方法,返回该三角形的周长。

⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。

⑧一个名为toString()的方法,返回三边较小的字符串描述。

 1 package zuoye;
 2 
 3 public  class Triangle extends Geometric{
 4 private double side1;
 5 private double side2;
 6 private double side3;
 7 public Triangle() {
 8     // TODO Auto-generated constructor stub
 9 }
10 
11     public Triangle(double side1, double side2, double side3) {
12     this.side1 = side1;
13     this.side2 = side2;
14     this.side3 = side3;
15 }
16     public double getSide1() {
17         return side1;
18     }
19     public void setSide1(double side1) {
20         this.side1 = side1;
21     }
22     public double getSide2() {
23         return side2;
24     }
25     public void setSide2(double side2) {
26         this.side2 = side2;
27     }
28     public double getSide3() {
29         return side3;
30     }
31     public void setSide3(double side3) {
32         this.side3 = side3;
33     }
34 
35     @Override
36     double getAear() {
37         // TODO Auto-generated method stub
38         double s = (side1 + side2 + side3) / 2;
39         return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
40     }
41 
42     @Override
43     double getPerimeter() {
44         // TODO Auto-generated method stub
45         return side1+side2+side3;
46     }
47    boolean isTriangle() {
48     if(side1+side2 >side3&&side1+side3>side2&&side2+side3>side1) {
49         return true;
50     }else {
51         return false;
52     }
53 }
54   double Min() {
55       double temp;
56     double min;
57     if(side1<side2) {
58         temp=side1;
59     }else {
60         temp=side2;
61     }
62     if(temp<side3) {
63         min=temp;
64     }else {
65         min=side3;
66   }
67     return min;
68 }
69 @Override
70 public String toString() {
71     return "Triangle [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + ", getAear()=" + getAear()
72             + ", getPerimeter()=" + getPerimeter() + ", isTriangle()=" + isTriangle() + ", Min()=" + Min() + "]";
73 }
74 }

 

 

 

 

 

 

 

(5)编写测试类,测试图形的面积和周长。

 1 package zuoye;
 2 
 3 public class GeometricText {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         Circle c1 = new Circle(2.5 );
 8         System.out.println(c1.toString());
 9         Rectangle r1 =new  Rectangle(2,5);  
10         System.out.println( r1.toString());
11         Triangle t1 =new  Triangle(3,4,5);
12         if(t1.isTriangle()) {
13             System.out.println(t1.toString());
14         }else {
15             System.out.println("不能构成三角形,请重新输入!!!");
16         }
17         
18     }
19 
20 }