UML非导航关系 - 使用或示例

时间:2017-10-01 00:03:39

标签: uml

任何人都可以给我一个真实的用途或一个关系的例子,其中两个(所有?)结束是不可导航的? (类似于下图)

enter image description here

2 个答案:

答案 0 :(得分:3)

根据UML标准(关于关联语义的第11.5.3.1节):

  

Navigability意味着在运行时参与链接的实例   (协会的实例)可以从中有效地访问   协会另一端的实例。精确的机制   通过其实现这种有效访问是特定于实现的。   如果结束不可导航,则可以或可以从另一端进行访问   不可能,如果是,可能效率不高

示例1

让我们想象一下UserAccountCLearTextPassword之间的关系:

  • 用户帐户不会以明文形式存储密码。它存储该密码的哈希值。如果使用加密质量哈希,则无法从UserAccount导航到ClearTextPassword
  • 相反,使用已知的ClearTextPassword,您无法直接找到UserAccount。首先必须计算哈希值。最后,可以导航,但效率低,因为计算可能很重。

示例2

让我们想象一个安全的分类帐。该分类帐中的每个Transaction都由委托User记录。但是分类帐不会保留对User的任何引用:它只会保留交易的数字签名。我知道一见钟情听起来很愚蠢,但想象一下voting machine that must guarantee anonymity of votes ......

因此UserTransaction之间存在关联:

  • 在任何时候,您可以验证特定Transaction,如果它是由给定用户录制的(存在关联)。
  • 您无法从他/她记录的User导航到Transactions:您错过了仅受用户控制的私钥,您无法计算哈希值您事先不知道的交易,因此您无法重新计算签名(这是唯一的连接元素)。
  • 相反,您无法从Transaction导航到User:您可以找回的唯一方法是使用所有用户的公钥验证签名,以找出匹配项一。这是可行的,绝对是非常低效的。

答案 1 :(得分:2)

我没有现实世界的例子,但这意味着CD必须互不认识。这是一种反社会。与复合聚合相反,其中一个对象的死亡迫使另一个对象的死亡。

P.S。在两个审讯单元中取两个嫌疑人。他们有一个关联,但既不必知道另一个的状态。非常构造,但这是我能想到的最好的。