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 }