作业3.30

(1)设计一个名为Geometric的几何图形的抽象类,该类包括:

①两个名为color、filled属性分别表示图形颜色和是否填充。

②一个无参的构造方法。

③一个能创建指定颜色和填充值的构造方法。

④一个名为getArea()的抽象方法,返回图形的面积。

⑤一个名为getPerimeter()的抽象方法,返回图形的周长。

⑥一个名为toString()的方法,返回该几何图形的字符串描述。

复制代码
package com.sdbi.yangyang;


public abstract class Geometric {
    private Color color;//表示图形颜色
    private boolean filled;//表示是否填充
    
    //无参的构造方法
    public Geometric() {
        
    }

    public Geometric(Color color, boolean filled) {
        super();
        this.color = color;
        this.filled = filled;
    }
    
    //返回图形面积
    abstract double getArea();

    //返回图形周长
    abstract double getPerimeter();
    
    //返回图形的字符串描述
    @Override
    public String toString() {
        return "Geometric[color="+color+",filled="+filled +"]";
    }

}
复制代码

(2)设计一个名为Circle的圆类来实现Geometric类,该类包括:

①一个名为radius的double类型私有属性表示半径。

②一个无参构造方法创建圆。

③一个能创建指定radius的圆的构造方法。

④radius的访问器方法。

⑤一个名为getArea()的方法,返回该圆的面积。

⑥一个名为getPerimeter()的方法,返回圆的周长。

⑦一个名为toString()的方法,返回该圆的字符串描述。

复制代码
package com.sdbi.yangyang;

public class Circle extends Geometric {
    private double radius;
    private static final double PI=3.14;
    //无参的构造方法
    public Circle() {
        
    }
    
    //创建指定radius的圆的构造方法
    public Circle (double radius) {
        super(new Color(200,200, 200),true);
        this.radius=radius;
        
    }
    //构造radius的访问器方法
    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }
    @Override
    //圆的面积
    double getArea() {
        
        return PI*radius*radius;
    }

    @Override
    //圆的周长
    double getPerimeter() {
        
        return 2*PI*radius;
    }

    @Override
    //返回该圆的描述
    public String toString() {
        String s=super.toString();
        return s + ";Circle [radius=" + radius + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]";
    }

}
复制代码

(3)设计一个名为Rectangle的矩形类来实现Geometric类,该类包括:

①两个名为side1、side2的double类型私有属性表示矩形的两条边。

②一个无参构造方法创建矩形。

③一个能创建指定sidel和side2的矩形的构造方法。

④side1和side2的访问器方法。

⑤一个名为getArea()的方法,返回该矩形的面积。

⑥一个名为gelPerimeter()的方法,返回该矩形的周长。

⑦一个名为toString()的方法,返回该矩形的字符串描述。

复制代码
package com.sdbi.yangyang;

public class Rectangle extends Geometric {
    private double side1;
    private double side2;
    public Rectangle() {
        
    }
    //能创建指定sidel和side2的矩形的构造方法。
    public Rectangle(double side1, double side2) {
        super();
        this.side1 = side1;
        this.side2 = side2;
    }
    //side1和side2的访问器方法。
    public double getSide1() {
        return side1;
    }
    public void setSide1(double side1) {
        this.side1 = side1;
    }
    public double getSide2() {
        return side2;
    }
    public void setSide2(double side2) {
        this.side2 = side2;
    }


    @Override
    //一个名为getArea()的方法,返回该矩形的面积。
    double getArea() {
        
        return side1*side2;
    }

    @Override
    //一个名为gelPerimeter()的方法,返回该矩形的周长。
    double getPerimeter() {
        
        return 2*side1+2*side2;
    }
    //一个名为toString()的方法,返回该矩形的字符串描述。
    @Override
    public String toString() {
        return "Rectangle [side1=" + side1 + ", side2=" + side2 + ", getArea()=" + getArea() + ", getPerimeter()="
                + getPerimeter() + "]";
    }
    
}
复制代码

(4)设计一个名为Triangle的三角形类来实现Geometric类,该类包括:

①三个名为side1,side2和side3的double类型私有属性表示三角形的三条边。

②一个无参构造方法创建三角形。

③一个能创建指定side1,side2和side3的矩形的构造方法。

④side1,side2和side3的访问器方法。

⑤一个名为getArea()的方法,返回该三角形的面积。

⑥一个名为getPerimeter()的方法,返回该三角形的周长。

⑦一个名为isTriangle()的方法,判断三边是否能构成三角形。

⑧一个名为toString()的方法,返回三边较小的字符串描述。

复制代码
package com.sdbi.yangyang;

import java.util.Scanner;

import org.omg.CosNaming.IstringHelper;

public class Triangle extends Geometric{
   //三个名为side1,side2和side3的double类型私有属性表示三角形的三条边
    private double side1;
    private double side2;
    private double side3;
    
    
    
    //一个无参构造方法创建三角形。
    public Triangle() {
        
    }
    //一个能创建指定side1,side2和side3的矩形的构造方法。
    public Triangle(double side1, double side2, double side3) {
        super();
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }
    //side1,side2和side3的访问器方法。
    public double getSide1() {
        return side1;
    }
    public void setSide1(double side1) {
        this.side1 = side1;
    }
    public double getSide2() {
        return side2;
    }
    public void setSide2(double side2) {
        this.side2 = side2;
    }
    public double getSide3() {
        return side3;
    }
    public void setSide3(double side3) {
        this.side3 = side3;
    }
    
    @Override
    //一个名为getArea()的方法,返回该三角形的面积。
    double getArea() {
        double p=(side1+side2+side3)/2;
        return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
    }

    
    @Override
    //一个名为getPerimeter()的方法,返回该三角形的周长。
    double getPerimeter() {
        
        return side1+side2+side3;
    }
    public void isTriangle() {
        System.out.println("请输入三条边长:");
        Scanner input=new Scanner(System.in);
        side1=input.nextDouble();
        side2=input.nextDouble();
        side3=input.nextDouble();
        if(side1+side2>side3&&side1+side3>side2&&side2+side3>side1) {
            System.out.println("能构成三角形");
        }else {
            System.out.println("不能构成三角形");
        }
        //一个名为toString()的方法,返回三边较小的字符串描述。
        
    }
    @Override
    public String toString() {
         
            double min=side1;
            if (side2<min){
                min=side2;
            }
            if(side3<min){
                min=side3;
            }
          System.out.println("最短边为:"+min);
        return "Triangle [side1=" + side1 + ", side2=" + side2 + ",side3=" + side3 + ", getArea()=" + getArea() + ", getPerimeter()="
                + getPerimeter() + "]";
          
    }

}
复制代码

(5)编写测试类,测试图形的面积和周长。

复制代码
package com.sdbi.yangyang;

public class GeometricTest {
    public static void main(String[] args) {
        //测试写的类
        
        //创建一个圆的实例
        Circle c1=new Circle( 2.3 );
           System.out.println( c1.toString() );
           
           Circle c2=new Circle( 5 );
           System.out.println( c2.toString() );
           
           //试着用父类--抽象类
          System.out.println("--------------------------------------------------------------");
          Rectangle r1=new Rectangle( 6,5 );
          System.out.println( r1.toString() );
          
          Rectangle r2=new Rectangle( 3,2 );
          System.out.println( r2.toString() );
          System.out.println("--------------------------------------------------------------");
          
          Triangle t1=new Triangle(2,3,4);
          System.out.println(t1.toString());
    }

}
复制代码

 

posted @   莯梵  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数 https://blog-static.cnblogs.com/files/xiaokang01/js.js 这是添加的文件的链接 color="240,230,140" 粒子的颜色设置 opacity="1" 粒子的透明度 count="75" 粒子的个数
点击右上角即可分享
微信分享提示