day20作业

在画图软件中,可以画出不同大小或颜色的圆形、矩形等几何图形。几何图形之间有许多共同的特征,如它们
可以是用某种颜色画出来的,可以是填充的或者不填充的。此外还有些不同的特征,比如,圆形都有半径,
可以根据半径计算圆形的面积和周长,矩形都有宽和高,可以根据宽高来计算矩形的面积和周长。
1、编写Java程序。
(1)使用继承机制,分别设计实现抽象类 图形类,子类类圆形类、正方形类、长方形类,要求:
①抽象类图形类中有属性包括画笔颜色(String类型)、图形是否填充(boolean类型:true表示填充,false表示不填充),
有方法获取图形面积、获取图形周长等;
②使用构造方法为其属性赋初值;
③在每个子类中都重写toString()方法,返回所有属性的信息;
④根据文字描述合理设计子类的其他属性和方法。

(2)设计实现画板类,要求:
①画一个红色、无填充、长和宽分别为10.0与5.0的长方形;
②画一个绿色、有填充、半径为3.0的圆形;
③画一个黄色、无填充、边长为4.0的正方形;
④分别求三个对象的面积和周长,并将每个对象的所有属性信息打印到控制台。

主方法类【类名Test】

public class Test {
    public static void main(String[] args){
        //圆形对象
        Circular c = new Circular();
        // 设置半径、颜色、填充
        c.setRadius(3.0);
        c.setPenColor("绿色");
        c.setFilled(true);

        //长方形对象
        Rectangle r = new Rectangle();
        //设置长、宽、颜色、填充
        r.setFilled(false);
        r.setPenColor("红色");
        r.setLength(10.0);
        r.setWidth(5.0);

        //正方形对象
        Square s = new Square();
        //设置边长、颜色、填充
        s.setFilled(false);
        s.setPenColor("黄色");
        s.setLength(4.0);

        System.out.println(r);
        System.out.println(c);
        System.out.println(s);
    }
}

图形抽象类【类名Graph】

//图形抽象类
public abstract class Graph {
    //图形属性
    private String penColor;
    private boolean isFilled;

    //获得面积
    public abstract double getArea();

    //获得周长
    public abstract double getCircumference();

    // setter and getter

    public String getPenColor() {
        return penColor;
    }

    public void setPenColor(String penColor) {
        this.penColor = penColor;
    }

    public boolean isFilled() {
        return isFilled;
    }

    public void setFilled(boolean filled) {
        isFilled = filled;
    }
}

圆形类【Circular】

//圆形类
public class Circular extends Graph {
    //圆形属性
    private double radius;
    private static final double PI = 3.14;

    //构造方法
    public Circular(){

    }
    public Circular(double radius,String penColor,boolean isFilled) {
        this.radius = radius;
        this.setFilled(isFilled);
        this.setPenColor(penColor);
    }

    // setter and getter
    public double getRadius() {
        return radius;
    }

    public void setRadius(double radius) {
        this.radius = radius;
    }

    @Override
    public double getArea() {
        return PI * radius * radius;
    }

    @Override
    public double getCircumference() {
        return PI * 2.0 * radius;
    }

    @Override
    public String toString() {
        return this.getPenColor() + (this.isFilled() ? ",无" : ",有") + "填充,"
                + "半径为" + this.getRadius() + ",面积为" + this.getArea() + ",周长为" + this.getCircumference();
    }
}

长方形类【类名Rectangle】

// 长方形类
public class Rectangle extends Graph{
    //长方形属性
    private double length;
    private double width;

    //构造方法
    public Rectangle(){

    }
    public Rectangle(double length, double width, String penColor, boolean isFilled){
        this.length = length;
        this.width = width;
        this.setPenColor(penColor);
        this.setFilled(isFilled);
    }

    // setter and getter

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    public double getWidth() {
        return width;
    }

    public void setWidth(double width) {
        this.width = width;
    }

    // 覆盖

    @Override
    public double getArea() {
        return this.getLength() * this.getWidth();
    }

    @Override
    public double getCircumference() {
        return this.getLength() * 2.0 + this.getWidth() * 2.0;
    }

    @Override
    public String toString() {
        return this.getPenColor() + (this.isFilled() ? ",无" : ",有") + "填充,"
                + "长为" + this.getLength() + ",宽为:" + this.getWidth() + ",面积为" + this.getArea() + ",周长为" + this.getCircumference();
    }
}

正方形类【类名Square】

// 正方形类
public class Square extends Graph{
    // 正方形属性
    private double length;

    // 构造方法
    public Square(){

    }

    public Square(double length, String penColor, boolean isFilled) {
        this.length = length;
        this.setPenColor(penColor);
        this.setFilled(isFilled);
    }

    // setter and getter

    public double getLength() {
        return length;
    }

    public void setLength(double length) {
        this.length = length;
    }

    // 周长和面积


    @Override
    public double getArea() {
        return length * length;
    }

    @Override
    public double getCircumference() {
        return length * 4.0;
    }

    @Override
    public String toString() {
        return this.getPenColor() + (this.isFilled() ? ",无" : ",有") + "填充,"
                + "边长为" + this.getLength() + ",面积为" + this.getArea() + ",周长为" + this.getCircumference();
    }
}

运行结果

红色,有填充,长为10.0,宽为:5.0,面积为50.0,周长为30.0
绿色,无填充,半径为3.0,面积为28.259999999999998,周长为18.84
黄色,有填充,边长为4.0,面积为16.0,周长为16.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值