Skip to content

类图

类图是面向对象建模的核心。它们展示了系统中的类、它们的属性、操作以及类之间的关系。

语法

类的定义

class 类名 {
    +公有字段
    -私有字段
    #受保护字段
    +公有方法()
    -私有方法()
    #受保护方法()
}

关系类型

  • 继承: <|--
  • 组合: *--
  • 聚合: o--
  • 关联: -->
  • 依赖: ..>
  • 实现: <|..

基础示例

代码:
mermaid
classDiagram
    动物 <|-- 鸭子
    动物 <|-- 鱼
    动物 <|-- 斑马
    动物 : +int 年龄
    动物 : +String 性别
    动物: +是否哺乳动物()
    动物: +交配()
    class 鸭子{
        +String 喙颜色
        +游泳()
        +嘎嘎叫()
    }
    class 鱼{
        -int 体长
        -能吃()
    }
    class 斑马{
        +bool 是否野生
        +奔跑()
    }
Ctrl + Enter|

高级示例

这是一个展示各种关系和特性的复杂类图:

代码:
mermaid
classDiagram
    顾客 "1" --> "*" 订单
    订单 "*" --> "1" 配送状态
    订单 "*" --> "*" 产品
    订单 "1" --> "1" 支付
    
    class 顾客 {
        +String 姓名
        +String 邮箱
        +String 地址
        +添加订单()
        +更新资料()
    }
    
    class 订单 {
        -int 订单ID
        -Date 订单日期
        -float 总金额
        +计算总额()
        +更新状态()
    }
    
    class 产品 {
        +String 名称
        +float 价格
        +int 库存
        -更新库存()
    }
    
    class 支付 {
        +String 支付方式
        +float 金额
        +Date 支付日期
        +处理支付()
    }
    
    class 配送状态 {
        +String 状态
        +Date 最后更新
        +更新状态()
    }
Ctrl + Enter|

附加功能

泛型类型

代码:
mermaid
classDiagram
    class 列表~T~{
        +int 大小
        +添加(T 元素)
        +获取(int 索引) T
    }
Ctrl + Enter|

接口

代码:
mermaid
classDiagram
    class 动物{
        <<interface>>
        +发出声音()
    }
Ctrl + Enter|

抽象类

代码:
mermaid
classDiagram
    class 形状{
        <<abstract>>
        +面积() float
    }
Ctrl + Enter|

样式设置

可以使用不同的符号表示可见性:

  • + 公有
  • - 私有
  • # 受保护
  • ~ 包/内部

实用技巧

  • 保持类的专注性,遵循单一职责原则
  • 使用有意义的类名和方法名
  • 只显示相关的属性和方法
  • 使用适当的类之间关系
  • 适当使用接口和抽象类
  • 注意类的封装性
  • 合理使用继承和组合
  • 避免过度设计

常见问题解决

  1. 设计问题

    • 检查类的职责是否单一
    • 确保继承关系合理
    • 避免过度耦合
  2. 关系表示

    • 正确使用关系类型
    • 明确关系的方向
    • 添加适当的关系描述
  3. 可读性问题

    • 适当分组相关类
    • 减少交叉关系
    • 使用清晰的命名

下一步