关于这一构成,哪一个是正确的?

问题描述

我用Car 0.1-Engine 1.1组成这张照片。 是真的吗 有人可以解释一下汽车与发动机的关系吗?

enter image description here

解决方法

自从标题提及组成以来,这个问题有些令人困惑,但不是您试图在蓝色框中回答的问题。

我们可以从蓝色框中的语句中得出结论:

  • 一个Car具有恰好一个 Engine ”表示在Engine端的1..1关联。

  • 一个Car 具有 一个Engine和一个 的事实 不是Engine消除了选项(c),因为generalization表示 是- 关系。

  • Engine最多具有 Car ”表示Car端的0..1

  • 但是“ 至多 ”表示它可能更少,换句话说,您可以拥有Engine而没有{{ 1}}。这使得选项(b)有点模棱两可,因为1)composition暗示CarEngine拥有,并负责其存在和存储; 2)尽管如此,UML允许将零件从复合材料中移除并独立存在(请参见说明第110页的注释); 3),但构图符号可能会误导读者有关分离零件的责任。

这使我们可以选择(a)和(d):

    选项(a)从技术上满足要求:该图中的组成表示Car不存在Car就不存在,但是Engine可以不存在Engine而存在。但是,UML组合的语义说这是部分-整体的关系,其中Car将是整体,而Engine将是零件。这是胡说八道,消除了选项(a) 选项(d)从技术上满足要求:它是常规的Car / 0..1关联。空心箭头表示此关联是从1..1Car的{​​{3}}。尚不清楚该关联是否可沿相反方向导航。导航是叙事中没有的其他信息,但并不矛盾。

总而言之,选项(d)是有效满足要求的最佳选择。它只是添加了有关该关联的更多信息。

选项(b)是可以接受的,但鉴于某些读者对分离零件的责任感到模棱两可,因此似乎不能自然地用于撰写。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...