我想知道 Human
和 Driver License
之间的关系是聚合还是组合?我很清楚 Room
和 Building
关系是一个组合,而 Chair
和 Room
是一个组合聚合。但是 Driver License
可以在没有 Human
的情况下存在,但如果没有 Human
,它的存在就毫无意义。我卡住了。
最佳答案
由于驾照不是人/人的一部分,而只是与她/他有关,因此他们之间既没有组合也没有聚合,而只是普通的关联。
Gholamali-Irani 的回答混淆了一个事实,即驾驶执照必须与一个人相关联(即,相应的关联端具有恰好一个多重性)与许多成分的(偶然)特征具有不可分割的部分, 并错误地认为 Association 必须是 Composition。
在许多情况下,我们可能怀疑关联是否是组合,将其建模为普通关联会更安全。
将关联(如 Human
-has-DriverLicense
)建模为组合的唯一充分理由是组件类型的实例(此处为驾驶执照)是没有自己身份的“弱实体”。但驾照确实有自己的 ID,因此没有必要,也没有任何好处,将它们建模为持有人的组成部分。
关于uml - 聚合与组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48360825/