多态应用:计算面积

定义三个类,父类(抽象类)GeometricObject代表几何形状,子类Circle代表圆形,子类Rectangle代表矩形。具体属性和方法如下:
父类 (抽象类)GeometricObject
属性:private String color; private String name;
为上述变量提供getter()和setter()方法
构造方法:为color和name初始化
public GeometricObject(String color, String name)
抽象方法:
public double findArea();用于计算几何图形的面积

子类:Circle
属性:private double radius;
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color和radius初始化
方法:
实现findArea()方法用于计算圆形的面积并返回计算结果

子类:Rectangle
属性:private double width; private double height;
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color,width和height初始化
方法:
实现findArea()方法用于计算矩形的面积并返回计算结果

测试类Main
方法:
public static void main(String[] args) {

    String shape;
    String color;
    double r,w,h;
    //System.out.println("input color,shape:");
    Scanner sc=new Scanner(System.in);
    color=sc.nextLine();
    shape=sc.nextLine();
    GeometricObject g=null;
    //输入颜色、形状,根据形状的不同 再输入半径或宽高、创建不同的对象,计算面积及输出
    /*  */
  }
public static void show(GeometricObject g){//该函数的方法体固定如下:
    System.out.println(g.getName()+"的颜色是:"+g.getColor()+",面积是:"+g.findArea());
}

注意:须书写抽象类GeometricObject、子类Circle和Rectangle。

输入格式:

蓝色

圆形

3.4

输出格式:

圆形的颜色是:蓝色,面积是:36.31681107549801

输入样例:

在这里给出一组输入。例如:

红色
矩形
1 2

输出样例:

在这里给出相应的输出。例如:

矩形的颜色是:红色,面积是:2.0

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

答案

import java.util.Scanner;
import static java.lang.Math.PI;
public class Main {
    public static void main(String[] args) {
        String shape;
        String color;
        double r,w,h;
        Scanner sc=new Scanner(System.in);
        color=sc.nextLine();
        shape=sc.nextLine();
        GeometricObject g=null;
        if(shape.equals("圆形"))
        {
            r=sc.nextDouble();
            Circle c=new Circle(color,"圆形",r);
            show(c);
        }
        else {
            w=sc.nextDouble();
            h=sc.nextDouble();
             Rectangle rc=new Rectangle(color,"矩形",w,h);
            show(rc);
        }
    }
    public static void show(GeometricObject g){//该函数的方法体固定如下:
        System.out.println(g.getName()+"的颜色是:"+g.getColor()+",面积是:"+g.findArea());
    }
}
 abstract class GeometricObject
{
   public abstract String getName();
    public abstract String getColor();
    public abstract double findArea();

}
 class Circle extends GeometricObject
 {
    String color,name;
    double r;
     public Circle(String color, String name,double r) {
       this.color=color;
       this.name=name;
       this.r=r;
     }
     public String getName() {
         return name;
     }
     public String getColor() {
         return color;
     }
     public double findArea() {
         return r*r*PI;
     }
 }
 class Rectangle extends GeometricObject {
    String color,name;
    double w,h;
     public Rectangle(String color, String name,double w,double h) {
         this.color=color;
         this.h=h;
         this.w=w;
         this.name=name;
     }
     public String getName() {
         return name;
     }
     public String getColor() {
         return color;
     }
     public double findArea() {
         return w*h;
     }
 }

3. 几何图形(满分50分) 版本1:满分 10 分 设计抽象类 GeometricObject 及其子类 Triangle 和CircleGeometricObject 设计要求如下: ■ 一个名为 color 的Color型的私有数据域,表示对象的颜色 ■ 一个名为 filled 的Boolean型的私有数据域,表示对象是否 ■ 一个名为 dateCreated 的Date 型的私有数据域,表示对象的 ■ 一个无参构造方法。 ■ 一个能创建特定 color 和filled 的有参构造方法。 ■ 相关数据域的访问器和修改器。 ■ 两个个名为 draw 和erase的抽象方法。 ■ 一个名为 getArea的抽象方法。 ■ 一个名为 getPerimeter的抽象方法。 ■ 重写 toString 方法。 Triangle 设计要求如下: ■ 三个名为 side1、side2和 side3 的double 型的私有数据域表 们的默认值是 1.0。要求三个数据域保留 2 位小数。 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 side1、side2和 side3 的有参构造方法。 ■ 所有三个数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 Circle 设计要求如下: ■ 一个名为 radius 的double 型的私有数据域,表示圆的半径,数据域保留2 位小数。 ■ 一个名为 PI 的静态常量,其值为 3.14 ■ 一个无参的构造方法创建默认三角形。 ■ 一个能创建带指定 radius 的有参构造方法。 ■ radius 数据域的访问器和修改器方法。 ■ 父类抽象方法的实现。 ■ 重写 toString 方法。 测试 TestGeometricObject1 设计要求如下: ■ 一个能随机生成 Circle 和Triangle 对象的静态方法 GeometricObject[] RandomCreateGeometricObject() ■ 以随机生成的数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 中其它方法的测试 版本2:满分 20 分 将上面的抽象类GeometricObject 改为接口,接口只保留其中四个抽象方法,声明 Circle、Triangle 实现该接口,的基本要求如上,同时为每个增加一个将当前对象序列化 到指定文件的方法 writeToFile(File f)。 测试 TestGeometricObject2 设计要求如下: ■ 一个能随机生成 Circle 和Triangle 对象的静态方法,该方法将随机生成的象序列 化到指定的文件 GeometricObjects.dat 中,序列化成功返回真,否则返回假。 Boolean RandomCreateGeometricObject() ■ 将GeometricObjects.dat 文件中对象全部读出,存储到 GeometricObject 对象数组中, 然后以此数组为参数,输出数组中每个对象的基本信息、周长和面积。 ■ 中其它方法的测试。 新增一个Rectangle ,也实现接口 GeometricObject ,同时修改测试 TestGeometricObject2 ,体会开-闭原则。 版本3:满分 20 分 在第2 步的基础上设计实现一个具有 GUI 界面的几何图形绘制系统系统,要求实现根 据选择的几何图形型来绘制和删除相应的图形,其中相关参数应通过界面输入,并可计算 图形的周长和面积
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白宇航(互关版)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值