需求分析与建模61 条

类图(Class Diagram)

描述类、属性、操作与类之间的关系,是结构建模的基础图;可见性符号 + 公开、- 私有、# 受保护、~ 包内可见,静态成员加下划线。

类图是什么

类图描述类、属性、操作以及类之间的关系,是结构建模中最常用的图。属性语法为“可见性 名称 : 类型 [多重性] = 默认值”,可见性符号 + 表示公开、- 表示私有、# 表示受保护、~ 表示包内可见,静态成员加下划线。类图用于表达系统结构与其稳定性,适合评审领域模型与接口结构,但不必追求与代码逐行同步。

Mermaid 类图示例

Mermaid 类图示例
classDiagram
  class Order {
    +String orderId
    -Money total
    +submit() void
  }
  class OrderLine {
    +String sku
    +int qty
  }
  Order "1" --> "1..*" OrderLine : contains

基本信息

属性语法可见性 名称 : 类型 [多重性] = 默认值
操作语法可见性 名称(参数) : 返回类型
关系类型关联、聚合、组合、泛化、实现、依赖
常见用途领域模型、数据模型草稿、接口结构评审
工具PlantUML、Mermaid、StarUML、draw.io

关系与取舍

关系符号语义与注意
关联实线长期引用关系,可加多重性
聚合空心菱形整体与部分可独立存在,语气较弱
组合实心菱形部分随整体销毁,删父即删子
泛化空心三角实线继承关系,过多继承会僵化结构
实现空心三角虚线实现接口,用于表达可替换的契约
依赖虚线开放箭头临时使用,改动风险传导的常见通道

典型使用场景

  • 领域建模评审:用类图确认实体、值对象与聚合的关系
  • 接口设计:表达服务间的数据结构与契约字段
  • 重构前梳理:把现有类关系画出来,找到循环依赖与过深继承
  • 新人上手:用一张图说明核心概念与职责划分
  • 数据库设计草稿:从逻辑类图过渡到物理表结构
  • 评审遗留代码:把隐式依赖显式化,识别高低耦合模块
类图用于沟通结构而非生成全部代码;与代码同步时优先保证关键类与关系准确,属性列表可按需省略。
继承层次超过三层通常意味着设计需要调整,优先用组合与接口替代继承,降低结构僵化风险。

易错点

  • 把类图当代码镜像逐字段同步,维护成本极高且很快过期
  • 滥用继承表达复用,父类改动牵动所有子类,回归范围失控
  • 用组合与聚合符号时不区分生命周期,销毁语义被误读
  • 类图不标多重性,评审时无法判断耦合强度与数据规模
  • 只画类不画依赖方向,循环依赖到编译期才被发现

数据来源与参考

  • OMG UML 2.5.1 规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌