我有两个组件 A 和 B。我希望模型显示它们都 <<include>> 和 <<use>> 第三个组件。哪张图是正确的,上图还是下图?
1 回答
通常,当您在 UML 中有两种可能性时,两者都是正确的。但不是在这里。恐怕,两者都不好。
根据现行标准 2.5 :
使用是一种依赖关系,其中一个 NamedElement 需要另一个 NamedElement(或一组 NamedElements)来实现其完整的实现或操作。用法没有指定客户如何使用供应商,除了供应商被客户的定义或实现使用这一事实。
因此,在 UML 中 <<use>> 意味着“必须具有某些用途”。请注意,它绝对独立于包含/包含关系。我们所依赖的对象甚至可以被包含,因为并不是说我们需要它来创建依赖对象。
我们可以使用属于任何地方的组件。但是在包含(顶部)图中,我们无法显示用法。所以,它不会通过。
至于第二种关系,包括,这里有更大的问题。
标准 UML 组件图没有“包含”构造型。但允许使用其他图表的元素。
但是组件不是一个类,它是一个对象。因此,您的组件 C 根本不能同时属于 A 和 B。另一个图表也失败了。如果你想拥有基于同一个类或包的两个不同的对象/组件,就会出现完全不同的图表。
因此,A 或 B 都有自己的 C 实例并使用此实例。它很干净,没有窥视其他组件。
如果您使用没有包含连接的工具,请使用用例图中的“包含”关联。
我也强烈怀疑您可能不需要组件,而是一些不同的图表,因为您希望将一个盒子放入不同的盒子是不自然的。