UML 关系

UML Relationships

问题是将给定的 UML 图片与所有可能的描述相结合。

UML 图

一个。可以从 B 导航到 A。

b。可以从 A 导航到 B。

c。 B 对 A 的引用很弱

d。 A是B的一部分。

e。 B 是 A 的一部分。

f。 A 和 B 之间存在不明确的关系。

克。当B不存在了,A就没有存在的理由了。

小时。当B不存在的时候,A还有存在的理由

我。 B 使用 A,但没有对 A 的引用。

我的尝试...

好吧,我已经记不清自己尝试了多少次了。但在我看来,这些描述有些含糊。你可以说它是否适用......最后我这样研究......

  1. 成分:g,e
  2. 聚合:e,h
  3. 行:f,a,b,h
  4. 依赖性:c,h
  5. 关联:a,h

而且它仍然不对...也许我对某些我确信的事情是错误的。但是我们的导师显然没有提供足够的material给我们解决这个问题,拒绝给出任何提示。这就是我阅读 post 和来自 google 的文章的程度...有人可以帮助指出错误或遗漏的地方吗?我觉得我要吐了...

从 UML 2.5 的角度来看:

(¹) 我会假设,用于绘制图表的工具没有明确显示关联端所有权或不可导航端,所以我会坚持使用 "common interpretation":

  • 如果没有箭头,则两端都属于各自的 Classifier,并且可以导航
  • 如果只有一个箭头,则该方向属于 Classifier 并且可以导航;另一端归协会所有,不可通航

高级 UML 工具可以通过在末尾添加黑点或小十字来明确区分,分别说明谁拥有关联以及它是否可导航。

  • A) 4-5 是,1-3 是 (¹)
  • B) 4-5 (¹) 否,1-3 (¹) 是
  • C) none 仅根据图表中的信息
  • D) none
  • E) 1-2
  • F) none; 3 只是一个常规关联,在前面所述的上下文中并不需要任何额外的东西
    • uml-diagrams.org 称此为未指定的可导航性,但是只有当绘图工具支持(或未抑制)所有上述标记(十字、点)时才为真
  • G) none;与 D)
  • 齐头并进
  • H)全部;基本上与G)
  • 相反
  • 我)全部;出于同样的原因与 A) 齐头并进

总而言之:我强烈建议您查看 UML 2.5 specifications 第 11.5.5 节中的示例。 整章 (11.5) 可以给您更多的洞察力,但是如果您只将 UML 视为图表而不是模型,它可能会让人不知所措。


更新回复:依赖关系

The presence of Dependency relationships in a model does not have any runtime semantic implications.

我更深入地了解了规范,这是依赖元模型

据此,客户和供应商都不了解对方;严格来说,该模型确实声明​​ NamedElement(Class 的超类)知道它依赖于谁(clientDependency),但是其定义如下:

{OCL} result = (Dependency.allInstances()->select(d | d.client->includes(self)))

我称之为废话,因为这样每个不可导航的端点都可以使用相同的方法进行导航。

因此,鉴于此,对于依赖项:

  • A) 技术上是的
  • B) 技术上没有,但没有什么能真正阻止我使用相同的方法,为什么 A 可导航也使 B 可导航

所以 A+B 都可以解释。

  • C) 是和否;取决于解释

根据模型,它没有直接参考,但是模型也说

A Dependency implies that the semantics of the clients are not complete without the suppliers. ... A Usage is a Dependency in which one NamedElement requires another NamedElement [...] for its full implementation or operation.

所以我不会称它为弱引用,因为客户需要它。事实上 UML 2.5 并没有在规范的相关部分使用一次 weak 这个词(更不用说 weak 参考了),所以这个术语本身有没有意义(可能是在旧版本的UML中使用的)。

  • I) 是和否,出于同样的原因;引用是派生的(从其他信息计算得出),但是规范还声明

Actions involving a derived Property behave the same as for a nonderived Property.

总结:依赖是一种想法的表现,而不是一种实现;因此,实际的解释留给使用它的人以及在特定上下文中最有意义的解释。

我保留了原来的答案,在这部分我或多或少地展示了一种非常机械和盲目的约束应用,这通常不是一个好主意。