当涉及到绘制​​ UML​​​​ 用例图​​时,许多人面临的一个难题是在用例图中显示各种关系。事实上,许多人倾向于混淆<<extend>>、<<include>>和泛化。本文将详细研究各种用例图关系,并使用示例对它们进行解释。要深入了解用例,请参阅我们的用例图教程。如果您想在学习的同时绘制它们,您可以使用我们的工具来创建用例图。

用例图中可以有5种关系类型。

  • Assoication - 参与者和用例之间的关联
  • Generalization - 演员的概括
  • 在两个用例之间扩展
  • 包括在两个用例之间
  • 用例的泛化

让我们详细看看这些关系。

1. Actor与用例之间的关联 (Assoication)

这个很简单,并且存在于每个用例图中。很少有事情需要注意。

  • 参与者必须与至少一个用例相关联。
  • actor可以与多个用例相关联。
  • 多个actor可以与单个用例相关联。

用例图的5种关系类型 - 关联、泛化 (Actor & Use Case)、包含、扩展_用例

2. 演员的泛化 (Generalization)

一个actor的泛化意味着一个actor可以继承另一个actor的角色。后代继承了祖先的所有用例。后代具有一个或多个特定于该角色的用例。

3. 用例之间的泛化 (Generalization)

一个用例的泛化意味着一个用例r可以继承另一个actor的角色。后代继承了祖先的所有用例。

用例图的5种关系类型 - 关联、泛化 (Actor & Use Case)、包含、扩展_用例_02

4. 扩展两个用例之间的关系

许多人在用例中混淆了扩展关系。顾名思义,它扩展了基本用例并为系统增加了更多功能。使用<< extend >>关系时,需要考虑以下几点。

  • 扩展用例取决于扩展(基础)用例。在下图中,如果没有“存款资金”用例,“计算奖金”用例没有多大意义。
  • 扩展用例通常是可选的,可以有条件地触发。在图中,您可以看到扩展用例仅针对超过10,000的存款或年龄超过55的情况触发。
  • 扩展(基础)用例必须是有意义的。这意味着它应该是独立的,不能依赖于扩展用例的行为。

5. 包括两个用例之间的关系

包含关系表明包含的用例的行为是包含(基础)用例的一部分。这样做的主要原因是在多个用例中重用常见操作。在某些情况下,这样做是为了简化复杂的行为。使用<< include >>关系时很少考虑。

  • 如果没有包含用例,基本用例是不完整的。
  • 包含的用例是强制性的,不是可选的。

用例图的5种关系类型 - 关联、泛化 (Actor & Use Case)、包含、扩展_用例图_03

(​​打开并编辑上面的示例​​)

用例图示例:ATM

这是ATM的用例图模板。在​​学习UML​​​时,ATM系统被广泛用作例子。ATM用例图是非常经典和流行的​​UML示例​​之一。让我们来看看。在此示例中,作为ATM用户的客户被建模为actor。提取现金,转移现金,向慈善机构捐款,支票余额和结算账单等主要功能都被模拟为用例。所有这些用例都包含Login用例。这意味着它们都包含与Login用例建模相同的登录功能。登录用例通过两个用例进一步扩展。这可以模拟登录过程中可能发生的异常情况。

用例图的5种关系类型 - 关联、泛化 (Actor & Use Case)、包含、扩展_泛化_04

(​​打开并编辑上面的示例​​)