Java实验二——编程实现计算矩形、三角形和圆形的周长和面积

编程实现计算矩形、三角形和圆形的周长和面积。要求:
(1) 要求从矩形、三角形和圆形抽象出抽象类GeometricObject。
(2) 绘制UML类图,可以省略set和get方法。
(3) 编写测试类,要求:

  • 使用下面的方法头,计算图形数组的总面积和总周长,并返回结果;体会动态绑定和多态的特性。

public static double totalArea(GeometricObject[] object)
public static double totalPerimeter(GeometricObject[] object)

  • 在main方法中,创建一个图形数组,在数组中存入一个矩形、三角形(不用判断输入的三条边能否组成三角形)和圆形对象,调用上面的方法,输出所有图形的面积、周长之和。

代码如下:
GeometricObject类:

public abstract class GeometricObject {
	public abstract double getArea();
	public abstract double getPerimeter();
}

Rectangle类:

public class Rectangle extends GeometricObject {
	private double height;
	private double width;
	public Rectangle(double height, double width) {
		this.height = height;
		this.width = width;
	}
	public double getHeight() {
		return height;
	}
	public void setHeight(double height) {
		this.height = height;
	}
	public double getWidth() {
		return width;
	}
	public void setWidth(double width) {
		this.width = width;
	}
	public double getArea() {
		return height * width;
	}
	public double getPerimeter() {
		return 2 * (height + width);
	}
}

Triangle类:

public class Triangle extends GeometricObject {
	private double side1;
	private double side2;
	private double side3;
	public Triangle(double side1, double side2, double side3) {
		this.side1 = side1;
		this.side2 = side2;
		this.side3 = side3;
	}
	public double getSide1() {
		return side1;
	}
	public void setSide1(double side1) {
		this.side1 = side1;
	}
	public double getSide2() {
		return side2;
	}
	public void setSide2(double side2) {
		this.side2 = side2;
	}
	public double getSide3() {
		return side3;
	}
	public void setSide3(double side3) {
		this.side3 = side3;
	}
	public double getArea() {
		double s = (side1 + side2 + side3) / 2;
		return Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
	}
	public double getPerimeter() {
		return side1 + side2 + side3;
	}
}

Circle类:

public class Circle extends GeometricObject {
	private double radius;
	public Circle(double radius) {
		this.radius = radius;
	}
	public double getRadius() {
		return radius;
	}
	public void setRadius(double radius) {
		this.radius = radius;
	}
	public double getArea() {
		return Math.PI * radius * radius;
	}
	public double getPerimeter() {
		return 2 * Math.PI * radius;
	}
}

测试类:

import java.util.Scanner;

public class oneTest {
	public static double totalArea(GeometricObject[] object) {
		return object[0].getArea() + object[1].getArea() + object[2].getArea();
	}
	public static double totalPerimeter(GeometricObject[] object) {
		return object[0].getPerimeter() + object[1].getPerimeter() + object[2].getPerimeter();
	}
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		GeometricObject[] object = new GeometricObject[3];  //创建图形数组
		System.out.println("请分别输入矩形的长和宽:");
		object [0] = new Rectangle(input.nextDouble(), input.nextDouble());
		System.out.println("请分别输入三角形的三条边:");
		object [1] = new Triangle(input.nextDouble(), input.nextDouble(), input.nextDouble());
		System.out.println("请输入圆的半径:");
		object [2] = new Circle(input.nextDouble());
		System.out.println("三个图形的总面积为:" + totalArea(object));
		System.out.println("三个图形的总周长为:" + totalPerimeter(object));
	}
}
  • 12
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值