UML用例图中的三种关系
在 UML 用例图中,用例(Use Case)之间的关系主要有以下三种:
1. 包含 (Include) —— “必须包含”
当多个用例中包含重复的步骤时,可以把这些公共步骤提取出来,作为一个独立的“被包含用例”。
- 特点: 基础用例(Base Case)执行时,一定会触发被包含用例。
- 箭头: 虚线箭头由基础用例指向被包含用例,上方注有 <>。
- 例子: “修改个人资料”和“发布评论”都包含“登录”。
2. 扩展 (Extend) —— “可选增强”
在一个基础用例的基础上,添加一些额外的、可选的行为。
- 特点: 基础用例可以独立完成,扩展用例不一定会执行,只有满足特定条件(扩展点)时才会触发。
- 箭头: 虚线箭头由扩展用例指向基础用例,上方注有 <>。(注意:箭头方向与包含关系相反)
- 例子: “支付订单”可以扩展出“使用优惠券”。
3. 泛化 (Generalization) —— “父子继承”
类似于面向对象里的继承。子用例是父用例的一种特殊形式,继承了父用例的所有结构和行为。
- 特点: 子用例可以覆盖或添加父用例的行为。
- 箭头: 实线加空心箭头,由子用例指向父用例。
- 例子: “支付”是父用例,“微信支付”和“银行卡支付”是它的子用例。
一句话总结区别:
- 包含: 没你不行(分解重复)。
- 扩展: 有你更好(添加可选功能)。
- 泛化: 你是我的一种(抽象与具体)。
