问题描述
我用Car 0.1-Engine 1.1组成这张照片。 是真的吗 有人可以解释一下汽车与发动机的关系吗?
解决方法
自从标题提及组成以来,这个问题有些令人困惑,但不是您试图在蓝色框中回答的问题。
我们可以从蓝色框中的语句中得出结论:
-
“ 一个
Car
具有恰好一个Engine
”表示在Engine
端的1..1关联。 -
一个
Car
具有 一个Engine
和一个 的事实 不是Engine
消除了选项(c),因为generalization表示 是- 关系。 -
”
Engine
最多具有Car
”表示Car
端的0..1 -
但是“ 至多 ”表示它可能更少,换句话说,您可以拥有
Engine
而没有{{ 1}}。这使得选项(b)有点模棱两可,因为1)composition暗示Car
由Engine
拥有,并负责其存在和存储; 2)尽管如此,UML允许将零件从复合材料中移除并独立存在(请参见说明第110页的注释); 3),但构图符号可能会误导读者有关分离零件的责任。
这使我们可以选择(a)和(d):
-
选项(a)从技术上满足要求:该图中的组成表示
Car
不存在Car
就不存在,但是Engine
可以不存在Engine
而存在。但是,UML组合的语义说这是部分-整体的关系,其中Car
将是整体,而Engine
将是零件。这是胡说八道,消除了选项(a)
选项(d)从技术上满足要求:它是常规的Car
/ 0..1
关联。空心箭头表示此关联是从1..1
到Car
的{{3}}。尚不清楚该关联是否可沿相反方向导航。导航是叙事中没有的其他信息,但并不矛盾。
总而言之,选项(d)是有效满足要求的最佳选择。它只是添加了有关该关联的更多信息。
选项(b)是可以接受的,但鉴于某些读者对分离零件的责任感到模棱两可,因此似乎不能自然地用于撰写。