【问题标题】:How can two components contain and use the third one?两个组件如何包含和使用第三个组件?
【发布时间】:2015-12-10 06:37:40
【问题描述】:

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

【问题讨论】:

  • 我真的不明白这里的近距离投票。提出两个(!)具体替代方案并询问哪个是正确的问题怎么可能是“太宽泛”或“不清楚”?
  • @O.R.Mapper 好吧,您有 10k 代表,但仍然没有了解到拒绝投票/关闭请求不遵循任何规则,而是(最好)大量规则?虽然我没有投反对票,但我理解“不清楚”,因为问题不清楚。
  • @ThomasKilian:如果您发现问题不清楚,请指出什么特别不清楚。当问题像显示两个 UML 图并询问哪个是正确的那样简单并不能完全帮助改进问题时,仅仅声明一个问题是不清楚的。另外,在我看来,这个问题要么不清楚,要么可以回答。两者似乎都相当矛盾;)
  • @O.R.Mapper 你已经阅读了我的回答,不是吗?
  • 我认为这个问题清晰而具体。 +1

标签: uml component-diagram


【解决方案1】:

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

按照现行标准2.5:

Usage 是一种依赖,其中一个 NamedElement 需要另一个 NamedElement(或一组 NamedElements)的完整实现或 手术。用法未指定客户如何使用供应商 除了供应商被定义使用的事实或 客户端的实现。

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

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2022-06-23
    • 1970-01-01
    • 2018-08-28
    • 2023-03-13
    • 2019-04-10
    • 2021-12-05
    • 2019-09-01
    • 1970-01-01
    相关资源
    最近更新 更多