两个成分如何包含和使用第三个成分?

How can two components contain and use the third one?

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

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

按照现行标准2.5:

A Usage is a Dependency in which one NamedElement requires another NamedElement (or set of NamedElements) for its full implementation or operation. The Usage does not specify how the client uses the supplier other than the fact that the supplier is used by the definition or implementation of the client.

因此,在 UML 中 <> 表示 "must have for some use"。请注意,它完全独立于 containment/inclusion 关系。我们所依赖的对象甚至可以被包含,因为并没有说我们需要它来创建依赖对象。

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

关于第二种关系,include,这里问题更大

标准 UML 组件图没有 "include" 构造型。但允许使用其他图表的元素。

但是组件不是 class,它是一个对象。所以,你的组件 C 不能同时属于 A 和 B。另一张图也失败了。如果你想有两个不同的 objects/components 基于相同的 class 或包,就会出现完全不同的图表。

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

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

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