两个组件如何包含和使用第三个组件?

时间:2015-09-14 09:48:22

标签: uml component-diagram

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

enter image description here

1 个答案:

答案 0 :(得分:2)

通常,当你在UML中有两种可能性时,两者都是正确的。但不是在这里。我担心,两者都不好。

根据现行标准2.5:

  

用法是一个依赖关系,其中一个NamedElement需要另一个   NamedElement(或NamedElements集合)用于其完整实现或   操作。用法未指定客户端如何使用供应商   除了供应商被定义或使用的事实   实施客户。

因此,在UML<< use>>意思是“必须有一些用途”。请注意,它完全独立于遏制/包含关系。我们依赖的对象甚至可以被包含,因为我们不需要它来创建依赖对象。

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

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

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

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

correct comp diagram

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

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

我还强烈怀疑你可能不需要Component,但是一些不同的图表,因为你希望将一个盒子放入不同的盒子中是不自然的。