单向关联与多重性UML

3

我正在尝试理解这个特定的案例:

 ---------                ---------
|         |0..*      0..*|         |
|CLASS  A |------------->| CLASS B |
|         |              |         |
 ---------                ---------


 ---------                ---------
|         |1..*      0..*|         |
|CLASS  A |------------->| CLASS B |
|         |              |         |
 ---------                ---------

我对第一个例子的理解是:类A的一个对象与类B的零个或多个对象存在关联。这是有道理的,因为类A知道类B。但是另一个多重性到底是什么意思呢?由于类B不知道类A,因此似乎在那里放置多重性没有意义。

同样适用于第二个例子。

如果有人有好的解释,我会非常感激。

问候, 约翰

3个回答

1
事实上,这是有道理的,因为它表达了对你(数据)模型的限制。通过在A端设置多重性为[1..*],你声明应该始终至少有一个或多个A的实例与B存在关系。当编写(或生成)业务代码时,通常不强制执行此约束,但这只是UML模型的一个应用。它还作为功能文档,我肯定对双方的多重性感兴趣。这种信息在设计数据库时也非常重要。它将确定FK字段是否可为空。

如果我要编写底部示例的代码,我的类B中会有来自类A类型的变量吗? - John
你不必这样做,因为UML只是说你应该能够轻松地从A到B进行导航,但它也没有明确禁止这样做。 - Geert Bellekens

0

B 不知道 A 的存在并不会阻止多个 A 连接到 B。例如,将 B 视为地址,A 公司知道许多地址。但是这些公司将地址交给其他公司 - 而 B 并不知道这一点。


0

这意味着通过您的关联,一个 B 的实例可以被多个 A 的实例所指向。

但通常我不会为 UML 关联上的非导航角色设置多重性,因为它不用于代码生成(通常没有此多重性信息的实现...)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接