组合和聚合关系UML的问题

时间:2014-01-19 00:29:17

标签: java uml aggregation composition relationships

我在UML中遇到CompositionAggregation关系的麻烦,我确实理解整个/部分关系,所以如果一个类没有它的整体就不能存在那么它会使它成为一个强大的组合关系,如果它仍然可以存在而没有它的整体那么它就会使它成为一个弱的聚合关系。

然而,有时它会比处理真实软件要求时更棘手。我有一个下面的类图,其中包含所有必需的属性,操作和属性,这些都在UML标准中正确显示,但我不确定我的关系:

1个接口和6个类

有人可以确认我的关系是否正确吗?

非常感谢

UML Diagram

2 个答案:

答案 0 :(得分:1)

有一些问题。组成的最佳例子是Maze to Location。您的连接器的钻石位于错误的一端。由另一个类组成的类具有菱形,因此Maze由Locations组成。迷宫应该有钻石。 物种 - 蛇的关系是可疑的,因为除蛇之外还有许多物种,物种不包括蛇。我也不认为Explorer包含Stones。探险者与石头的关系是直的(如果我理解你的应用)1对多关系。 我还会在图表中添加多重性以澄清1:1,1:多,等等。请更正您的图表并重新发布。

答案 1 :(得分:0)

反之亦然。黑色菱形应位于侧面,或者只是连接另一侧的一组物体。

此外,占用者可以在没有位置的情况下存在(冒险前的探险家),因此它更像是聚合依赖,而不是组合。至于迷宫,迷宫是一个位置的组合,好的。探索者对石头的依赖再次聚集 - 石头可以很容易地没有资源管理器。

另外,我不确定石头应该直接从占用者下降。我定义了CaveObject类(因为Object已经很忙)并从中派生出Stone和Occupant,并从最后派生出Snake和Explorer。我添加了一个TemporaryOccupant接口,并使Explorer实现它。在该界面中,我将把函数从一个位置移动到另一个位置。

至于物种/蛇,恐怕,我迷失了 - 什么属于什么?相反,物种应该是另一个界面,蛇和资源管理器也应该实现它。

顺便说一句,我在这里看到另一个错误:你连接Snake和Species - 它是另一个类的属性,已经有另一个类的类型。不要将它声明为类矩形中的另一个参数。

您的资源管理器只有Name的getter,但没有Setter。你的drop()没有参数来设置将要删除的内容。