UML图表帮助(聚合/组合)

时间:2016-04-02 23:50:17

标签: java uml aggregation composition

我在完全理解构图和聚合方面遇到了一些麻烦。从我理解构图关系意味着如果一个人死于其他模具。聚合意味着它们是由它组成的,但不一定依赖于事物的继续存在。

这是我为了一场心灵游戏而组装的UML。我是否正确地理解了这个概念? UML Diagram

1 个答案:

答案 0 :(得分:0)

什么是构图和聚合?

组合和聚合代表整体/部分关系(UML 2.5,第11.5.3.1节):

  

二元关联可以表示复合聚合(即,a   整体/部分关系)。

因此,如果您使用钻石,在考虑如何创建或删除对象之前,您应首先问自己它是否真的是一个整体/部分关系。

然后,合成对共享聚合有额外的约束。在组合关系中(UML 2.5,第9.5.3节):

  

(...)复合对象负责存在和存储   组合对象。
复合聚合是一种强有力的形式   需要零件对象的聚合最多包含一个   一次复合对象。如果删除了复合对象,则全部删除   它的部分实例将被删除。

分析您的特定图表

根据你的图表:

  • 玩家仅存在于游戏中(即,临时识别不是在几个游戏中存在的帐户)。组合可能有意义,因为玩家可以被视为游戏的一部分。
  • 仅与玩家有关。那讲得通。但它真的是一种构图关系吗?手是否是玩家的一部分?玩家是否由手组成?玩家不会有几手顺序而不能同时进行几手牌吗?我真的怀疑这里的作文;我用很多手牌协会的正常1名球员代表这一点。
  • 游戏聚合了几个套牌。我不了解你的比赛,但我期待一个牌组。如果使用多个套牌,并且套牌仅存在于游戏中(类似于玩家),我宁愿看到合成而不是聚合。或者你可能意味着不是甲板,而是甲板和它的状态。在这种情况下,我选择一对多的关联,而不是一个组合(牌组+状态不会是你游戏的一个组成部分,而是定义游戏的状态)。
  • 牌组是的集合,独立于牌组而存在。这让我很烦恼,因为我的世界经验总是表明一张牌是牌组的一部分。如果我在某个地方找到一张孤立的卡片,我总是会找到它的卡片。因此,我更期待卡片和卡片之间的组合。
  • 最后一手是几张牌的集合,这似乎是有道理的。请注意,这与卡组和卡之间的组合不相容。