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 }

 

posted @ 2022-03-31 21:19  Li_MuXia  阅读(97)  评论(0)    收藏  举报