You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3.7 KiB

图形面积计算器 - 类图

UML类图(文字描述)

                    ┌─────────────────────────┐
                    │      <<abstract>>       │
                    │         Shape          │
                    ├───────────────────────┤
                    │ - name: String          │
                    ├───────────────────────┤
                    │ + Shape(name: String)│
                    │ + getName(): String │
                    │ + getArea(): double  │
                    │   <<abstract>>      │
                    └───────────┬───────────┘
                                │
         ┌──────────────────────┼──────────────────────┐
         │                      │                      │
         ▼                      ▼                      ▼
┌───────────────────┐  ┌───────────────────┐  ┌───────────────────┐
│      Circle       │  │    Rectangle       │  │     Triangle      │
├───────────────────┤  ├───────────────────┤  ├───────────────────┤
│ - radius: double │  │ - width: double  │  │ - base: double    │
│                  │  │ - height: double │  │ - height: double  │
├───────────────────┤  ├───────────────────┤  ├───────────────────┤
│ + Circle(radius)  │  │ + Rectangle(w,h) │  │ + Triangle(b,h)│
│ + getRadius()    │  │ + getWidth()     │  │ + getBase()       │
│ + setRadius()    │  │ + setWidth()     │  │ + setBase()       │
│ + getArea()      │  │ + getHeight()    │  │ + getHeight()     │
│   @Override      │  │ + setHeight()    │  │ + setHeight()     │
└───────────────────┘  │ + getArea()      │  │ + getArea()      │
                      │   @Override      │  │   @Override      │
                      └───────────────────┘  └───────────────────┘

┌─────────────────────────────────┐
│          ShapeUtil              │
├─────────────────────────────────┤
│ + printArea(Shape shape)    │
└─────────────────────────────────┘

类图说明

类关系说明

  1. **Shape(抽象类)

    • 是所有图形的父类
    • 包含抽象方法 getArea()
    • 所有子类必须实现此方法
  2. **Circle(圆)

    • 继承自 Shape
    • 实现圆形面积计算:π × r²
  3. **Rectangle(矩形)

    • 继承自 Shape
    • 实现矩形面积计算:宽 × 高
  4. **Triangle(三角形)

    • 继承自 Shape
    • 实现三角形面积计算:0.5 × 底 × 高
  5. **ShapeUtil(工具类)

    • 提供静态方法 printArea()
    • 参数为 Shape 类型(多态)
    • 可以接受任何 Shape 的子类

继承关系符号

  • 箭头表示继承关系(is-a)
  • Circle is-a Shape
  • Rectangle is-a Shape
  • Triangle is-a Shape