2016-04-02 220 views
1

我在完全理解組合和聚合方面遇到了一些麻煩。從我所瞭解的構圖關係來看,如果一個人死於其他死亡。聚合意味着它們是由那個形成的,但不一定依賴於那些事物的持續存在。UML圖幫助(聚合/組合)

這是我爲一場心靈的遊戲拼湊而成的UML。我是否正確掌握了這個概念? UML Diagram

+0

我會告訴你,你的卡類看起來不對。那些應該完成的整數屬性是什麼? –

+0

@JimL。哈哈我正在使用預定義的卡類。我不會這樣設計它,但必須解決這個設計。 – rizz

+0

你用什麼工具繪製這個圖,爲什麼它會複製兩個類的memberName?看起來不像真正的UML。 –

回答

0

什麼是組成和聚合?

的組合物和聚集表示整體/部分關係(UML 2.5,節11.5.3.1):

二進制協會可表示複合聚合(即, 整體/部分關係 )。

所以如果你使用鑽石,你應該首先問自己它是否真的是整體/部分關係,然後再考慮如何創建或刪除對象。

然後,合成對共享聚合具有附加限制。在構圖關係中(UML 2.5,9.5.3節):

(...)組合對象負責組合對象的存在和存儲 。
合成聚合是 聚合的強大形式,要求一次將最多一個對象包含在一個組合對象中。如果複合對象被刪除,則其所有對象零件實例都將被刪除。您的具體diagramm

分析根據您的圖表:

  • 球員只存在內的遊戲(即臨時標識不佔現有跨幾場比賽)。構圖可能是有意義的,因爲玩家可以被視爲遊戲的一部分。
  • 只存在於玩家。這就說得通了。但它真的是一種構圖關係嗎?手是球員的一部分嗎?球員是由手組成嗎?球員不會有幾隻手依次連續,但不是在同一時間?我真的懷疑這裏的作品。我會用一名普通的1名球員來代表這個聯盟。
  • 該遊戲聚合了幾個卡座。我不知道你的比賽,但我希望有一個套牌。如果使用幾個套牌,並且套牌只存在於一個遊戲中(與玩家類似),我寧願看到一個組合而不是聚合。或者,你可能不是指甲板,而是甲板與其狀態。在這種情況下,我會選擇一對多關聯而不是一個構圖(這個套牌+狀態不會是你遊戲的一部分,而是定義遊戲的狀態)。
  • 甲板是的集合,獨立於甲板存在。這給我帶來了很多麻煩,因爲我的世界經驗總是表明一張牌是甲板的一部分。如果我在某個地方找到一張孤立的卡片,我一直在尋找它的套牌。因此,我寧願期待牌與牌組合。
  • 最後一隻手是幾張牌的聚合,這似乎是有道理的。請注意,這與卡組和卡之間的組合不兼容。
+0

謝謝。這幫了一大筆錢。 – rizz

+0

您對UML 2.5的引用不完整。他們也容易混淆地說:「在複合對象被刪除之前,部分對象可能會從複合對象中被刪除,因此不能作爲複合對象的一部分被刪除」。看到我的答案http://stackoverflow.com/questions/734891/aggregation-versus-composition/27889087#27889087 –