答案 0 :(得分:3)
根据UML标准(关于关联语义的第11.5.3.1节):
Navigability意味着在运行时参与链接的实例 (协会的实例)可以从中有效地访问 协会另一端的实例。精确的机制 通过其实现这种有效访问是特定于实现的。 如果结束不可导航,则可以或可以从另一端进行访问 不可能,如果是,可能效率不高。
示例1
让我们想象一下UserAccount
和CLearTextPassword
之间的关系:
UserAccount
导航到ClearTextPassword
。 ClearTextPassword
,您无法直接找到UserAccount
。首先必须计算哈希值。最后,可以导航,但效率低,因为计算可能很重。 示例2
让我们想象一个安全的分类帐。该分类帐中的每个Transaction
都由委托User
记录。但是分类帐不会保留对User
的任何引用:它只会保留交易的数字签名。我知道一见钟情听起来很愚蠢,但想象一下voting machine that must guarantee anonymity of votes ......
因此User
和Transaction
之间存在关联:
Transaction
,如果它是由给定用户录制的(存在关联)。User
导航到Transactions
:您错过了仅受用户控制的私钥,您无法计算哈希值您事先不知道的交易,因此您无法重新计算签名(这是唯一的连接元素)。 Transaction
导航到User
:您可以找回的唯一方法是使用所有用户的公钥验证签名,以找出匹配项一。这是可行的,绝对是非常低效的。 答案 1 :(得分:2)
我没有现实世界的例子,但这意味着C
和D
必须互不认识。这是一种反社会。与复合聚合相反,其中一个对象的死亡迫使另一个对象的死亡。
P.S。在两个审讯单元中取两个嫌疑人。他们有一个关联,但既不必知道另一个的状态。非常构造,但这是我能想到的最好的。