3

我有两个组件 A 和 B。我希望模型显示它们都 <<include>> 和 <<use>> 第三个组件。哪张图是正确的,上图还是下图?

在此处输入图像描述

4

1 回答 1

2

通常,当您在 UML 中有两种可能性时,两者都是正确的。但不是在这里。恐怕,两者都不好。

根据现行标准 2.5 :

使用是一种依赖关系,其中一个 NamedElement 需要另一个 NamedElement(或一组 NamedElements)来实现其完整的实现或操作。用法没有指定客户如何使用供应商,除了供应商被客户的定义或实现使用这一事实。

因此,在 UML 中 <<use>> 意味着“必须具有某些用途”。请注意,它绝对独立于包含/包含关系。我们所依赖的对象甚至可以被包含,因为并不是说我们需要它来创建依赖对象。

我们可以使用属于任何地方的组件。但是在包含(顶部)图中,我们无法显示用法。所以,它不会通过。

至于第二种关系,包括,这里有更大的问题。

标准 UML 组件图没有“包含”构造型。但允许使用其他图表的元素。

但是组件不是一个类,它是一个对象。因此,您的组件 C 根本不能同时属于 A 和 B。另一个图表也失败了。如果你想拥有基于同一个类或包的两个不同的对象/组件,就会出现完全不同的图表。

正确的比较图

因此,A 或 B 都有自己的 C 实例并使用此实例。它很干净,没有窥视其他组件。

如果您使用没有包含连接的工具,请使用用例图中的“包含”关联。

我也强烈怀疑您可能不需要组件,而是一些不同的图表,因为您希望将一个盒子放入不同的盒子是不自然的。

于 2015-09-14T21:48:48.703 回答