(1)设计一个名为Geometric的几何图形的抽象类,该类包括:
①两个名为color、filled属性分别表示图形颜色和是否填充。
②一个无参的构造方法。
③一个能创建指定颜色和填充值的构造方法。
④一个名为getArea()的抽象方法,返回图形的面积。
⑤一个名为getPerimeter()的抽象方法,返回图形的周长。
⑥一个名为toString()的方法,返回圆的字符串描述。
代码:
package com.sdbi.liyan; abstract class Geometric { String color;//表示图形颜色 boolean filled;//表示图形是否填充 //定义一个无参的构造方法 public Geometric() { }//创建一个能指定颜色和填充值的构造方法。 public Geometric(String color,boolean filled) { this.color=color; this.filled=filled; } abstract double getArea();//一个名为getArea()的抽象方法,返回图形的面积。 abstract double getPerimeter();//一个名为getPerimeter()的抽象方法,返回图形的周长。 //一个名为toString()的方法,返回圆的字符串描述。 @Override public String toString() { return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; } }
(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:
①一个名为radius的double属性表示半径。
②一个无参构造方法创建圆。
③一个能创建指定radius的圆的构造方法。
④radius的访问器方法。
⑤一个名为getArea()的方法,返回该圆的面积。
⑥一个名为getPerimeter()的方法,返回圆的周长。
⑦一个名为toString()的方法,返回该圆的字符串描述。
代码:
package com.sdbi.liyan; import java.util.Scanner; public class Circle extends Geometric{ double radius;//表示半径 //一个无参构造方法创建圆 public Circle() { }//一个能创建指定radius的圆的构造方法。 public Circle(double radius) { this.radius=radius; }//radius的访问器方法 public double getRadius() { return radius; } @Override //一个名为getArea()的方法,返回该圆的面积。 double getArea() { Scanner sc=new Scanner(System.in); System.out.println("请输入一个半径,求圆的面积"); final double PI=3.14D; double r=sc.nextDouble(); double S=PI*r*r; System.out.println("半径为"+r+"的圆的面积为:"+S); return S; } //一个名为getPerimeter()的方法,返回圆的周长。 @Override double getPerimeter() { Scanner sc=new Scanner(System.in); System.out.println("请输入一个半径,求圆的周长"); final double PI=3.14D; double r=sc.nextDouble(); double C=PI*r*2; System.out.println("半径为"+r+"的圆的周长为:"+C); return C; }//一个名为toString()的方法,返回该圆的字符串描述。 @Override public String toString() { return "Circle [radius=" + radius + ", color=" + color + ", filled=" + filled + ", getRadius()=" + getRadius() + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]"; } }
(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:
①两个名为side1、side2的double属性表示矩形的两条边。
②一个无参构造方法创建矩形。
③一个能创建指定sidel和side2的矩形的构造方法。
④sidel和sidez的访问器方法。
⑤一个名为getArea()的方法,返回该矩形的面积。
⑥一个名为gelPerimeter()的方法,返回该矩形的周长。
⑦一个名为toString()的方法,返回该矩形的字符串描述。
代码:
package com.sdbi.liyan; import java.util.Scanner; public class Rectangle extends Geometric { double side1;//表示矩形的一边 double side2;//表示矩形的另一边 //一个无参构造方法创建矩形 public Rectangle() { } //一个能创建指定sidel和side2的矩形的构造方法。 public Rectangle(double side1,double side2) { this.side1=side1; this.side2=side2; }//sidel和sidez的访问器方法。 public double getSide1() { return side1; }public double getSide2() { return side2; }//一个名为getArea()的方法,返回该矩形的面积。 @Override double getArea() { Scanner cc=new Scanner(System.in); System.out.println("请输入长和宽,求矩形的面积"); double s1=cc.nextDouble(); double s2=cc.nextDouble(); double S=s1*s2; System.out.println("边长为"+s1+"和"+s2+"的矩形的面积为:"+S); return S; }//一个名为gelPerimeter()的方法,返回该矩形的周长。 @Override double getPerimeter() { Scanner cc=new Scanner(System.in); System.out.println("请输入长和宽,求矩形的周长"); double s1=cc.nextDouble(); double s2=cc.nextDouble(); double C=(s1+s2)*2; System.out.println("边长为"+s1+"和"+s2+"的矩形的周长为:"+C); return C; }//一个名为toString()的方法,返回该矩形的字符串描述。 @Override public String toString() { return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", color=" + color + ", filled=" + filled + ", getSide1()=" + getSide1() + ", getSide2()=" + getSide2() + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + ", toString()=" + super.toString() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() + "]"; } }
(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:
①三个名为side1,side2和side3的double属性表示三角形的三条边。
②一个无参构造方法创建三角形。
③一个能创建指定side1,side2和side3的矩形的构造方法。
④sidel,side2和side3的访问器方法。
⑤一个名为getArea()的方法,返回该三角形的面积。
⑥一个名为getPerimeter()的方法,返回该三角形的周长。
⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。
⑧一个名为toString()的方法,返回三边较小的字符串描述。
代码:
package com.sdbi.liyan; import java.util.Scanner; public class Triangle extends Geometric { double side1; double side2; double side3; //一个无参构造方法创建三角形。 public Triangle() { }//一个能创建指定side1,side2和side3的矩形的构造方法。 public Triangle(double side1,double side2,double side3) { this.side1=side1; this.side2=side2; this.side3=side3; }//sidel,side2和side3的访问器方法。 public double getSide1() { return side1; }public double getSide2() { return side2; }public double getSide3() { return side3; }//一个名为getArea()的方法,返回该三角形的面积。 @Override double getArea() { Scanner sr=new Scanner(System.in); System.out.println("请输入三个边长,求三角形的面积"); double b1=sr.nextDouble(); double b2=sr.nextDouble(); double b3=sr.nextDouble(); double p=(b1+b2+b3)/2; double S=Math.sqrt(p*(p-b1)*(p-b2)*(p-b3)); System.out.println("边长为"+b1+"和"+b2+"和"+b3+"的三角形的面积为:"+S); return S; }//一个名为getPerimeter()的方法,返回该三角形的周长。 @Override double getPerimeter() { Scanner sr=new Scanner(System.in); System.out.println("请输入三个边长,求三角形的周长"); double b1=sr.nextDouble(); double b2=sr.nextDouble(); double b3=sr.nextDouble(); double C=b1+b2+b3; System.out.println("边长为"+b1+"和"+b2+"和"+b3+"的三角形的周长为:"+C); return C; }//一个名为isTriangle()的方法,判断三边是否能构成三角形。 public void isTriangle() { Scanner sr=new Scanner(System.in); System.out.println("请输入三个边长,判断能否构成三角形"); double b1=sr.nextDouble(); double b2=sr.nextDouble(); double b3=sr.nextDouble(); if (b1+b2>b3 && b1+b3>b2 && b2+b3>b1) { System.out.println("能构成三角形"); }else { System.out.println("不能构成三角形"); } }//一个名为toString()的方法,返回三边较小的字符串描述。 public String toString() { Scanner sr=new Scanner(System.in); System.out.println("请输入三个边长,求最小边"); double b1=sr.nextDouble(); double b2=sr.nextDouble(); double b3=sr.nextDouble(); double min=b1; if (b1<b2) { if (b1<b3) { min=b1; }else { min=b3; } }else if (b2<b1) { if (b2<b3) { min=b2; }else{ min=b3; } }System.out.println("三边最小的是:"+min); return "三边最小的是:"+min; } }
(5)编写测试类,测试图形的面积和周长。
代码:
package com.sdbi.liyan; import java.nio.channels.NonWritableChannelException; import java.util.Scanner; //(5)编写测试类,测试图形的面积和周长。 public class GeometricTest { public static void main(String[] args) { Triangle st=new Triangle(); st.getArea(); st.getPerimeter(); st.isTriangle(); st.toString(); System.out.println("-----------------------------------------------------"); Circle sc=new Circle(); sc.getArea(); sc.getPerimeter(); System.out.println("-----------------------------------------------------"); Rectangle sr=new Rectangle(); sr.getArea(); sr.getPerimeter(); } }