Java案例分析
【案例4-7】图形的面积与周长计算程序
2024-10-25 16 0
简介 1. 案例描述 长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长。
【案例4-7】图形的面积与周长计算程序
【案例介绍】
1. 案例描述
长方形和圆形都属于几何图形,都有周长和面积,并且它们都有自己的周长和面积计算公式。使用抽象类的知识设计一个程序,可以计算不同图形的面积和周长。
2. 运行结果
【案例目标】
l 学会“图形的面积与周长计算程序设计”的实现思路。
l 独立完成“图形的面积与周长计算程序设计”的源代码编写、编译及运行。
l 理解和掌握面向对象的设计过程。
l 掌握抽象类及抽象方法的使用。
【案例分析】
(1)定义父类Shape作为抽象类,并在类中定义抽象方法求周长和面积。
(2)定义Shape子类圆形(circle),具有半径属性和常量PI,同时必须实现父类中的抽象方法。
(3)定义Shape子类长方形(rectangle),具有长和宽的属性,同时必须实现父类的抽象方法。
(4)创建图形面积周长计算器(ShapeCalculate),具有计算不同图形面积和周长的方法。
(5)创建测试类TestShape类,在其main()方法中对ShapeCalculate计算面积和周长方法进行测试。
【案例实现】
Shape.java
1 public abstract class Shape {
2 // 抽象方法: 获取面积
3 public abstract double getArea();
4 // 抽象方法:获取周长
5 public abstract double getPerimeter();
6 }
上述代码中,在Shape类中定义了面积和周长的抽象方法。
Cirle.java
1 public class Circle implementsShape {
2 private double radius = 0; // 圆的半径
3 private final static double PI = 3.14; // 常量,圆周率
4 // 有参构造,初始化圆半径
5 public Circle(double radius) {
6 this.radius = radius;
7 }
8 // 求圆面积
9 public double getArea() {
10 return PI*radius*radius;
11 }
12 // 求圆周长
13 public double getPerimeter() {
14 return 2*radius*PI;
15 }
16 }
上述代码中,定义了圆形Circle类并继承了Shape类,再Circle类中重写了Shape中的getArea()和getPerimeter()方法,分别计算圆的面积和周长。
Rectangle.java
1 public class Rectangle implements Shape {
2 private double length = 0; // 长方形的长
3 private double width = 0; // 长方形的宽
4 // 有参构造,初始化长方形的长和宽
5 public Rectangle(double length, double width) {
6 super();
7 this.length = length;
8 this.width = width;
9 }
10 public double getArea() {
11 return this.length*this.width;
12 }
13 public double getPerimeter() {
14 return 2*(this.length+this.width);
15 }
16 }
上述代码中,定义了长方形Rectangle类并继承了Shape类,再Circle类中重写了Shape中的getArea()和getPerimeter()方法,分别计算长方形的面积和周长。
ShapeCaculate.java
1 public class ShapeCaculate {
2 // 可以计算任意shape子类的面积
3 public void calArea (Shape shape) {
4 System.out.println(shape.getArea());
5 }
6 // 可以计算任意shape子类的周长
7 public void calPerimeter(Shape shape) {
8 System.out.println(shape.getPerimeter());
9 }
10 }
创建了图形面积周长计算器ShapeCalculate类,calArea ()方法用来计算不同图形面积,calPerimeter()方法用来计算不同图形的周长。
TestShape.java
1 public class TestShape {
2 public static void main(String[] args) {
3 // 创建图形计算器
4 ShapeCaculate sc = new ShapeCaculate();
5 // 创建长方形和圆形对象
6 Shape rectangle = new Rectangle(3, 4); // <-------多态
7 Circle circle = new Circle(3);
8 // 求长方形和圆形的面积
9 System.out.println("长方形的面积:");
10 sc.calArea(rectangle);
11 System.out.println("圆形的面积:");
12 sc.calArea(circle);
13 // 求长方形和圆形的周长
14 System.out.println("长方形的周长:");
15 sc.calPerimeter(rectangle);
16 System.out.println("圆形的周长:");
17 sc.calPerimeter(circle);
18 }
19 }
在上述代码中,分别创建了一个圆形circle对象和一个长方形rectangle对象,然后分别计算了圆形和长方形的面积和周长。