当涉及到绘制 UML 用例图时,许多人面临的一个难题是在用例图中显示各种关系。事实上,许多人倾向于混淆<<extend>>、<<include>>和泛化。本文将详细研究各种用例图关系,并使用示例对它们进行解释。要深入了解用例,请参阅我们的用例图教程。如果您想在学习的同时绘制它们,您可以使用我们的工具来创建用例图。
用例图中可以有5种关系类型。
- Assoication - 参与者和用例之间的关联
- Generalization - 演员的概括
- 在两个用例之间扩展
- 包括在两个用例之间
- 用例的泛化
让我们详细看看这些关系。
1. Actor与用例之间的关联 (Assoication)
这个很简单,并且存在于每个用例图中。很少有事情需要注意。
- 参与者必须与至少一个用例相关联。
- actor可以与多个用例相关联。
- 多个actor可以与单个用例相关联。
2. 演员的泛化 (Generalization)
一个actor的泛化意味着一个actor可以继承另一个actor的角色。后代继承了祖先的所有用例。后代具有一个或多个特定于该角色的用例。
3. 用例之间的泛化 (Generalization)
一个用例的泛化意味着一个用例r可以继承另一个actor的角色。后代继承了祖先的所有用例。
4. 扩展两个用例之间的关系
许多人在用例中混淆了扩展关系。顾名思义,它扩展了基本用例并为系统增加了更多功能。使用<< extend >>关系时,需要考虑以下几点。
- 扩展用例取决于扩展(基础)用例。在下图中,如果没有“存款资金”用例,“计算奖金”用例没有多大意义。
- 扩展用例通常是可选的,可以有条件地触发。在图中,您可以看到扩展用例仅针对超过10,000的存款或年龄超过55的情况触发。
- 扩展(基础)用例必须是有意义的。这意味着它应该是独立的,不能依赖于扩展用例的行为。
5. 包括两个用例之间的关系
包含关系表明包含的用例的行为是包含(基础)用例的一部分。这样做的主要原因是在多个用例中重用常见操作。在某些情况下,这样做是为了简化复杂的行为。使用<< include >>关系时很少考虑。
- 如果没有包含用例,基本用例是不完整的。
- 包含的用例是强制性的,不是可选的。
用例图示例:ATM
这是ATM的用例图模板。在学习UML时,ATM系统被广泛用作例子。ATM用例图是非常经典和流行的UML示例之一。让我们来看看。在此示例中,作为ATM用户的客户被建模为actor。提取现金,转移现金,向慈善机构捐款,支票余额和结算账单等主要功能都被模拟为用例。所有这些用例都包含Login用例。这意味着它们都包含与Login用例建模相同的登录功能。登录用例通过两个用例进一步扩展。这可以模拟登录过程中可能发生的异常情况。