Uml 组合关系的多重性

Uml 组合关系的多重性,uml,Uml,根据我的理解,没有复合对象,部分对象是不可能存在的。但是在这个图中,根据给定的多重性,B类型对象可以没有类型对象。可能吗?这是什么意思 根据UML规范(9.5.3) 复合聚合是一种强大的聚合形式,要求零件对象一次最多包含在一个复合对象中。 如果删除了复合对象,则将删除其所有零件实例 对象将随之删除 该图是绝对正确的(即使在UML考试中,您也会发现这样的示例) 语义是,类B的对象(如果在组合中)是a的一部分(a负责B,当a被删除时,此时属于其部分的所有对象也将被删除)。属于A类一个对象的B类对象不

根据我的理解,没有复合对象,部分对象是不可能存在的。但是在这个图中,根据给定的多重性,B类型对象可以没有类型对象。可能吗?这是什么意思

根据UML规范(9.5.3)

复合聚合是一种强大的聚合形式,要求零件对象一次最多包含在一个复合对象中。 如果删除了复合对象,则将删除其所有零件实例 对象将随之删除

该图是绝对正确的(即使在UML考试中,您也会发现这样的示例)

语义是,类B的对象(如果在组合中)是a的一部分(a负责B,当a被删除时,此时属于其部分的所有对象也将被删除)。属于A类一个对象的B类对象不能同时是其他A类对象的一部分。但是,B类对象可能不是任何A类对象的一部分

这是你的案子。因此,类型B的对象不是任何类型A的对象的一部分(这在您的模型中是可能的),或者是一个类型A的对象的一部分。

根据UML规范(9.5.3)

复合聚合是一种强大的聚合形式,要求零件对象一次最多包含在一个复合对象中。 如果删除了复合对象,则将删除其所有零件实例 对象将随之删除

该图是绝对正确的(即使在UML考试中,您也会发现这样的示例)

语义是,类B的对象(如果在组合中)是a的一部分(a负责B,当a被删除时,此时属于其部分的所有对象也将被删除)。属于A类一个对象的B类对象不能同时是其他A类对象的一部分。但是,B类对象可能不是任何A类对象的一部分


这是你的案子。因此,类型B的对象不是任何类型A的对象的一部分(这在您的模型中是可能的),或者正好是一个类型A的对象的一部分。

那么,如果在不关联的情况下删除,B怎么可能具有0重数?B不必是A的一部分。它可以只是一个单独的对象,也可以是不同对象(例如C)的一部分。此外,规范并没有说元素B将在与A分离时被移除。它只说元素B将在A被销毁时被销毁,如果它是A的一部分。规范明确指出,模型可能会使B与A分离。如果必须将B与A类型的其他对象重新连接或保持完全分离的对象,则取决于模型。此答案是正确的。不要求a部分对象(B)是其他聚合对象(a)的一部分。但是一个part对象只能是一个聚合对象的一部分;不管定义了多少不同的组合,因为组合必须是唯一的。组合并不意味着当组合被破坏时所有组件都必须被破坏,请参见我的SO答案@gwag,我完全了解这些细节。实际上,规范中关于预先从整体上移除零件的陈述并不是100%清楚,因为可以理解,移除可以作为对象销毁的一个步骤进行,或者仅在其销毁之前的整个生命周期中的某个地方进行。然而,如果物体是一个部分,在销毁过程之前或作为销毁过程的一部分没有被移除,那么它将与整体一起销毁。我的意思是写“如果元素B在a被销毁时是a的一部分,那么它将被销毁”。那么,如果它在不关联的情况下被删除,B怎么可能具有0重数呢?B不必是a的一部分。它可以只是一个单独的对象,也可以是不同对象(例如C)的一部分。此外,规范并没有说元素B将在与A分离时被移除。它只说元素B将在A被销毁时被销毁,如果它是A的一部分。规范明确指出,模型可能会使B与A分离。如果必须将B与A类型的其他对象重新连接或保持完全分离的对象,则取决于模型。此答案是正确的。不要求a部分对象(B)是其他聚合对象(a)的一部分。但是一个part对象只能是一个聚合对象的一部分;不管定义了多少不同的组合,因为组合必须是唯一的。组合并不意味着当组合被破坏时所有组件都必须被破坏,请参见我的SO答案@gwag,我完全了解这些细节。实际上,规范中关于预先从整体上移除零件的陈述并不是100%清楚,因为可以理解,移除可以作为对象销毁的一个步骤进行,或者仅在其销毁之前的整个生命周期中的某个地方进行。然而,如果物体是一个部分,在销毁过程之前或作为销毁过程的一部分没有被移除,那么它将与整体一起销毁。我的意思是写“当a被破坏时,如果元素B是a的一部分,它将被破坏”。