标题项目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);
}
}
设计步骤:
- 将几何对象设计成一个抽象类,该抽象类的定义大致如下:
public abstract class Shape {
public String shapeType;
public abstract double getArea(); //计算几何图形的面积
public abstract double getPerimeter(); //计算几何图形的周长
}
请将程序补充完整,并解释各个abstract的具体含义; - 设计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;
}
//补充必要的方法实现
}