中臺架構
(1)設計一個名為Geometric的幾何圖形的抽象類,該類包括:
①兩個名為color、filled屬性分別表示圖形顏色和是否填充。
②一個無參的構造方法。
③一個能建立指定顏色和填充值的構造方法。
④一個名為getArea()的抽象方法,返回圖形的面積。
⑤一個名為getPerimeter()的抽象方法,返回圖形的周長。
⑥一個名為toString()的方法,返回圓的字串描述。
1 package javawork; 2 3 public abstract class Geometric { 4 public String color; 5 public booleanfilled; 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 }