3.30
(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回圆的字符串描述。
1 package javawork; 2 3 public abstract class Geometric { 4 public String color; 5 public boolean filled; 6 public abstract void Geometric() ; 7 public abstract void Geometric( boolean filled,String color) ; 8 public abstract double getArea(); 9 public abstract double getPerimeter(); 10 @Override 11 public String toString() { 12 return super.toString(); 13 } 14 }

2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
1 package javawork; 2 3 public class Circle extends Geometric{ 4 double radius; 5 static final double PI=3.14; 6 @Override 7 public void Geometric(boolean filled,String color) { 8 this.filled=filled; 9 this.color=color; 10 } 11 public Circle() { 12 } 13 public void Circle(double radisu) { 14 this.radius=radisu; 15 } 16 @Override 17 public double getArea() { 18 return radius*radius*PI; 19 } 20 @Override 21 public double getPerimeter() { 22 return radius*2*PI; 23 } 24 @Override 25 public void Geometric() { 26 if (filled) { 27 System.out.println("填充颜色为:"+color); 28 } 29 else{ 30 System.out.println("无填充"); 31 } 32 } 33 @Override 34 public String toString() { 35 return "Circle [ radius="+radius+",color="+color+",filled="+filled+ 36 ",getArea"+getArea()+",getPerimeter()="+getPerimeter()+",toString()=" 37 +super.toString()+",PI="+PI+",hasCode()"+hashCode(); 38 } 39 }

(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和side2的矩形的构造方法。
④sidel和sidez的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
1 package javawork; 2 3 public class Rectangle extends Geometric { 4 double side1,side2; 5 6 public Rectangle() { 7 8 } 9 @Override 10 public void Geometric(boolean filled,String color) { 11 this.filled=filled; 12 this.color=color; 13 } 14 public void Rectangle(double side1,double side2) { 15 this.side1=side1; 16 this.side2=side2; 17 } 18 @Override 19 public double getArea() { 20 return side1*2+side2*2; 21 } 22 @Override 23 public double getPerimeter() { 24 return side1*side2; 25 } 26 @Override 27 public void Geometric() { 28 if (filled) { 29 System.out.println("填充颜色为:"+color); 30 } 31 else{ 32 System.out.println("无填充"); 33 } 34 } 35 @Override 36 public String toString() { 37 return "Rectanle [ side1="+side1+"side2"+side2+",color="+color+",filled="+filled+ 38 ",getArea"+getArea()+",getPerimeter()="+getPerimeter()+"toString()=" 39 +super.toString()+",hasCode()"+hashCode(); 40 } 41 42 43 }

(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④sidel,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
1 package javawork; 2 import java.math.*; 3 public class Triangle extends Geometric { 4 double side1,side2,side3,s; 5 public Triangle() { 6 } 7 public void Trianle(double side1,double side2,double side3) { 8 this.side1=side1; 9 this.side2=side2; 10 this.side3=side3; 11 s=side1+side2+side3; 12 } 13 @Override 14 public void Geometric(boolean filled,String color) { 15 this.filled=filled; 16 this.color=color; 17 } 18 @Override 19 public double getArea() { 20 return Math.sqrt(s*(s-side1)*(s-side2)*(s-side3)); 21 } 22 @Override 23 public double getPerimeter() { 24 return side1+side2+side3; 25 } 26 public boolean isTriangle() { 27 if (side1+side2>side3&&side2+side3>side2&&side2+side3>side1) { 28 return true; 29 } 30 else { 31 return false; 32 } 33 } 34 @Override 35 public void Geometric() { 36 if (filled) { 37 System.out.println("填充颜色为:"+color); 38 } 39 else{ 40 System.out.println("无填充"); 41 } 42 } 43 @Override 44 public String toString() { 45 if (side1<=side2&&side1<=side3) { 46 return "Rectangle [side1="+side1+"]"; 47 } 48 else if (side2<=side1&&side2<=side3) { 49 return "Rectangle [side2"+side2+"]"; 50 } 51 return "Rectangle [side3="+side3+"]"; 52 } 53 }

(5)编写测试类,测试图形的面积和周长。
1 package javawork; 2 import java.util.Scanner; 3 public class Text { 4 public static void main(String[] args) { 5 String figure; 6 Scanner sc=new Scanner(System.in); 7 Circle c1=new Circle(); 8 Rectangle r1 =new Rectangle(); 9 Triangle t1=new Triangle(); 10 System.out.println("-圆形-"); 11 System.out.println("-矩形-"); 12 System.out.println("-三角形-"); 13 14 System.out.println("请输入圆的半径:"); 15 c1.Circle(sc.nextDouble()); 16 c1.Geometric(false,"null"); 17 System.out.println("周长:"+c1.getPerimeter()+"面积:"+c1.getArea()); 18 c1.Geometric(); 19 System.out.println(c1.toString()); 20 21 System.out.println("请输入矩形的宽和高:"); 22 r1.Rectangle(sc.nextDouble(), sc.nextDouble()); 23 r1.Geometric(true,"白色"); 24 System.out.println("周长:"+r1.getPerimeter()+"面积:"+r1.getArea()); 25 r1.Geometric(); 26 System.out.println(r1.toString()); 27 28 System.out.println("请输入三角形的三条边:"); 29 t1.Trianle(sc.nextDouble(), sc.nextDouble(), sc.nextDouble()); 30 if (t1.isTriangle()) { 31 t1.Geometric(true,"绿色"); 32 System.out.println("周长:"+r1.getPerimeter()+"面积:"+r1.getArea()); 33 t1.Geometric(); 34 System.out.println(t1.toString()); 35 } 36 else { 37 System.out.println("这三条边不能构成三角形"); 38 } 39 } 40 41 }


浙公网安备 33010602011771号