编写一个Java程序,该程序能够求出一个由几何对象组成的数组中的所有几何对象的面积之和

标题项目1:编写一个Java程序,该程序能够求出一个由几何对象组成的数组中的所有几何对象的面积之和;

测试主类的代码如下:
public class TestShape {
public static void main(String[] args) {
Shape[] shapes=new Shape[3];
shapes[0]=new Rectangle(3,4);
shapes[1] = new Triangle(3,4,5);
shapes[2]= new Circle(1.3);
test(shapes);
}

public static void test(Shape[] sps){
    double totalarea=0;
    double perimeter=0;
	//统计数组中的图形的面积和周长;
	System.out.println(“总面积为:”+totalarea);

System.out.println(“总面积为:”+perimeter);
}

}

设计步骤:

  1. 将几何对象设计成一个抽象类,该抽象类的定义大致如下:
    public abstract class Shape {
    public String shapeType;
    public abstract double getArea(); //计算几何图形的面积
    public abstract double getPerimeter(); //计算几何图形的周长
    }
    请将程序补充完整,并解释各个abstract的具体含义;
  2. 设计Rectangle、Triangle、Circle类,这些类都是Shape类的子类;类的框架如下:
    class Rectangle extends Shape{
    private double length;
    private double height;
    Rectangle(double length,double height){
    //补充代码
    }
    //补充必要的方法实现
    }

class Triangle extends Shape{
private double a,b,c;
Triangle(double a,double b,double c){
//补充代码
}
//补充必要的方法实现
}

class Circle extends Shape{
private double r;
Circle(double r){
//补充代码
}
//补充必要的方法实现
}

测试主类
public class TestShape {
    public static void main(String[] args) {
        Shape[] shapes=new Shape[3];
        shapes[0]=new Rectangle(3,4);//数字存图形,四边形
        shapes[1] = new Triangle(3,4,5);//三角形
        shapes[2]= new Circle(1.3);//
        test(shapes);

    }

    public static void test(Shape[] sps){
        double totalarea=0;
        double perimeter=0;
        //统计数组中的图形的面积和周长;
        for (int i = 0; i < sps.length; i++) {
            totalarea += sps[i].getArea();
            perimeter += sps[i].getPerimeter();
        }
        System.out.println("总面积为:"+totalarea);
        System.out.println("总面积为:"+perimeter);
    }
} 

抽象类
public abstract class Shape {
    public String shapeType;
    public abstract double getArea(); //计算几何图形的面积
    public abstract double getPerimeter(); //计算几何图形的周长
}



Triangle类
public class Triangle extends Shape{
    private double a,b,c;
    public Triangle(double a,double b,double c){
        //补充代码
        this.a = a;
        this.b = b;
        this.c = c;
    }

    @Override
    public double getArea() {
        double area = 0;
        double p = (this.a+this.b+this.c)/2;
        return Math.sqrt(p*(p-this.a)*(p-this.b)*(p-this.c));
    }



    @Override
    public double getPerimeter() {
        return this.a+this.b+this.c;
    }
}


Circle类
import static java.lang.Math.PI;
public class Circle extends Shape{
    private double r;
    public Circle(double r){
        //补充代码
        this.r = r;
    }

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

    @Override
    public double getPerimeter() {
        return 2*PI*r;
    }
}


Rectangle类
public class Rectangle extends Shape {
    private double length;
    private double height;

    public Rectangle(double length, double height) {
        //补充代码
        this.length = length;
        this.height = height;
        this.shapeType = "长方形";
    }

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

    @Override
    public double getPerimeter() {
        return (this.height + this.length) * 2;
    }
    //补充必要的方法实现
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值