类图
类图是最常见的 UML 图表类型,用于通过展示类、其属性、操作和关系来对系统的静态结构建模。
创建类
使用类工具
在 UML 类图 页面上,按 U 或从工具栏的 UML 菜单中选择 类。在画布上点击以放置一个类框,或拖动以设置其大小。选中类后按 Return 可重命名它。
类框结构
一个 UML 类框由三个分区组成:
- 名称分区 - 包含类名和可选的构造型
- 属性分区 - 列出类的属性/字段
- 操作分区 - 列出类的方法/函数
类属性
选中一个类,使用检查器的 排列 标签页 → UML 部分来配置它的属性:
名称
类名以粗体显示在顶部分区中。惯例使用 PascalCase(例如 CustomerOrder)。
构造型
可选的分类符,以书名号形式显示在类名上方:
<<interface>>- 用于接口定义<<abstract>>- 用于抽象类<<enumeration>>- 用于枚举类型<<entity>>- 用于领域实体- 也支持自定义构造型
抽象
切换后以斜体渲染类名,表示这是一个抽象类。
约束调整大小
开启时(默认状态),调整大小会保持类框的比例。
属性
属性表示类的数据/属性。
添加属性
- 选中该类
- 在 UML 部分找到 属性 ——一个多行编辑器,每行一个属性
- 点击 +(或按
Cmd+L)添加新属性,然后输入其详细信息
属性语法
属性遵循以下格式:可见性 名称 : 类型
可见性修饰符:
| 符号 | 含义 | 说明 |
|---|---|---|
+ | 公有 | 可从任何位置访问 |
- | 私有 | 仅可在类内部访问 |
# | 受保护 | 可在类及其子类中访问 |
~ | 包 | 可在同一包内访问 |
示例:
-id: Int- 私有整数 ID+name: String- 公有字符串 name#createdAt: Date- 受保护的日期字段~cache: Map<String, Any>- 包内私有缓存
操作
操作表示类的行为/方法。
添加操作
- 选中该类
- 在 UML 部分找到 操作 ——一个多行编辑器,每行一个操作
- 点击 +(或按
Shift+Cmd+L)添加新操作,然后输入其详细信息
操作语法
操作遵循以下格式:可见性 名称(参数) : 返回类型
示例:
+getName(): String- 返回 String 的公有 getter-validate(input: String): Boolean- 私有验证方法+process(data: Data, options: Options): Result- 带多个参数的方法+save(): void- 无返回值的方法
关系
按 R 激活关系工具,然后从一个类拖动到另一个类以创建连接。
关系类型
| 类型 | 线条样式 | 箭头 | 使用场景 |
|---|---|---|---|
| 关联 | 实线 | 空心箭头 | 一般关系 |
| 依赖 | 虚线 | 空心箭头 | "使用"关系 |
| 继承 | 实线 | 空心三角形 | "是一个"关系(扩展) |
| 实现 | 虚线 | 空心三角形 | 接口实现 |
| 聚合 | 实线 | 空心菱形 | "拥有一个"(弱所有权) |
| 组合 | 实线 | 实心菱形 | "拥有一个"(强所有权) |
创建关系
- 按
R激活关系工具 - 点击源类
- 拖动到目标类
- 释放以创建连接
- 使用检查器的 UML 部分设置 关系类型 ——线条样式和箭头会随类型变化
关系标签
选中一个关系,在检查器的 UML 部分设置它的标签:
- 标签 - 描述该关系(例如"管理"、"包含")
- 多重性 - 源 和 目标 的值,表示实例数量(例如 "1"、"0.."、"1..")
最佳实践
- 保持简单 - 不要试图为所有内容建模;专注于关键类
- 使用构造型 - 清晰标注接口和抽象类
- 展示关键关系 - 不是每个关联都需要展示出来
- 命名一致 - 类使用 PascalCase,成员使用 camelCase
- 对相关类进行分组 - 使用视觉上的邻近性来展示逻辑分组