UML关系可以是组合和聚合吗?

时间:2014-07-27 17:01:25

标签: uml aggregation composition

我的情况是A类有B而没有B就不能存在,但B可以完全独立于A存在。

从A的角度来看,这是一种构成关系,但从B的角度来看,这是一种聚合关系。

我该怎么办?

3 个答案:

答案 0 :(得分:1)

如果A由B组成,则它与A类侧的组合结尾相关联。组合和聚合是关联端的类型。可以在一侧具有成分而在另一侧具有聚合。

你可以通过回答问题来识别作文..是否是由B类组成的A类?如果是的话,那就是A级方面的构成......例子:计算机是由内存,CPU等组成的吗?所有计算机组件都与计算机组成。

聚合示例:特定椅子放在房间里。它是聚合的,因为房间不是由椅子组成的(房间由墙壁,窗户等组成)。但是椅子可以放在室内放置家具。

答案 1 :(得分:0)

在通常的用法中,关联不是组合和聚合,而是取决于应用程序。出租车/轮胎关系将与出租车附近的黑色填充钻石组成。轮胎可以存在于独立于出租车的部件部门,但是没有4个轮胎就不能派出出租车。零件部门可以不带轮胎存在,这样就可以聚合。

答案 2 :(得分:0)

您的抽象示例是聚合或组合,其中部分是可分离的(在某种意义上它们不存在依赖于聚合)。您没有对B部分的排他性做出任何陈述。如果它们不能在两个或更多个A之间共享,那么A和B之间的关联就是一个组合。

请注意,将组合定义为复合存在依赖于组件的聚合是一个普遍的错误。 UML规范声明这通常但不一定是组合物的情况。相反,定义组合的是组件是不与其他组合共享的独占部分。

另见my answer相关的SO问题。