作业 3.0
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 }



浙公网安备 33010602011771号