作业面向对象(下)

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

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

②一个无参的构造方法。

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

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

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

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

复制代码

package com.sdbi.shijun;


abstract class Geometric {
//两个名为color、filled属性分别表示图形颜色和是否填充。
//一个无参的构造方法。
//一个能创建指定颜色和填充值的构造方法。
//一个名为getArea()的抽象方法,返回图形的面积。
//一个名为getPerimeter()的抽象方法,返回图形的周长。
//一个名为toString()的方法,返回该几何图形的字符串描述
private String color;
private boolean filled;
public Geometric() {
System.out.println("无参的构造方法");
}
public Geometric(String color,boolean filled) {
this.color=color;
this.filled=filled;
}
abstract double getArea();
abstract double getPerimeter();
@Override
public String toString() {
return "Geometric [color=" + color + ", filled=" + filled + ", getArea()=" + getArea() + ", getPerimeter()="
+ getPerimeter() + "]";
}
}

复制代码

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

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

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

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

④radius的访问器方法。

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

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

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

复制代码
package com.sdbi.shijun;

public class Circle extends Geometric {
private    static final double  pI =3.14;
private double radius;//半径
//无参构造方法。
public Circle() {
    
}
public Circle(double radius) {//指定圆的构造方法
    this.radius = radius;
}

public void setRadius(double radius) {
    this.radius = radius;
}
//radius的访问器方法

public double getRadius() {
    return radius;
}
double getArea() {
    return pI * radius *radius;
}

double getPerimeter() {
    return 2 * pI *radius;
}
@Override
public String toString() {
    return "Circle [radius=" + radius + ", getArea()=" + getArea() + ", getPerimeter()=" + getPerimeter() + "]";
}
}
复制代码

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

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

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

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

④side1和side2的访问器方法。

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

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

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

复制代码
package com.sdbi.shijun;

public class Rectangle extends Geometric{
    private double side1;
    private double side2;
    public Rectangle() {
        System.out.println();
    }
    public Rectangle(double side1, double side2) {
        super();
        this.side1 = side1;
        this.side2 = side2;
    }
    public void setSide1(double side1) {
        this.side1 = side1;
    }

    public double getSide1() {
        return side1;
    }
    public void setSide2(double side2) {
        this.side2 = side2;
    }
    public double getSide2() {
        return side2;
    }
    @Override
    double getArea() {
        // TODO Auto-generated method stub
        return side1 *side2;
    }
    @Override
    double getPerimeter() {
        // TODO Auto-generated method stub
        return 2 *(side1 + side2);
    }
    @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.shijun;

public class Triangle extends Geometric{
    private double side1;
    private double side2;
    private double side3;
    public Triangle() {
        // TODO Auto-generated constructor stub
    }
    public Triangle(double side1, double side2, double side3) {
        super();
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
    }
    @Override
    double getArea() {
        double p=((side1+side2+side3)/2);
        return Math.sqrt(p*(p-side1)*(p-side2)*(p-side3));
    }

    @Override
    double getPerimeter() {
        return side1+side2+side3;
    }
       boolean isTriangle(double side1, double side2, double side3) {//判断是否是三角形
            if ((side1 + side2) > side3 && (side1 + side3) > side2 && (side2 + side3) > side1) {
                return true;
            } else {
                return false;
            } 
        }
         @Override
            public String toString() {
             //判断最小值
                double temp;
                if (side1 >= side2) {
                    temp = side1;
                    side1 = side2;
                    side2 = temp;
                }
                
                if (side1 >= side3) {
                    temp = side1;
                    side1 = side3;
                    side3 = temp;
                }
                
                return " shout [side1=" + side1 + "] ";

            }
}
复制代码

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

复制代码
package com.sdbi.shijun;
public class GeometricText {
public static void main(String[] args) {
    Triangle st=new Triangle();
    st.getArea();
    st.getPerimeter();
    st.isTriangle(3,4,5);
    st.toString();
    System.out.println("-----------------------------------------------------");
    Circle sc=new Circle();
    sc.getArea();
    sc.getPerimeter();
    System.out.println("-----------------------------------------------------");
    Rectangle sr=new Rectangle();
    sr.getArea();
    sr.getPerimeter();
}
}
复制代码

 

posted @   ice798  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示