2012-01-27 234 views
0

在我創建一個類變量並在構造函數中初始化它時,我們可以說它是一個UML聚合,在面向對象中?在同一個想法中,我們可以說方法中定義的變量是UML關聯嗎?類變量是UML聚合?

什麼是UML關聯/匯聚/成分和OO類之間的關係?

+0

你的意思是一個實例變量?一個類變量是一個靜態成員,但你談論構造函數的初始化。 – 2012-01-27 13:28:18

+0

我試圖弄清楚如何從UML模式編寫我的類。 – 2012-01-27 13:33:21

+0

是的,但在OO中,「類變量」是Java中的靜態變量。我想你是指在構造函數中初始化的非原始實例變量? – 2012-01-27 13:37:35

回答

1

一般而言,組合物是聚合的特殊情況,且是關聯的特例。您使用什麼取決於模型,即關聯關係的屬性。

UML不處理實際的實現,你也可以用非OO的方式實現UML描述的模型。對於你關於UML關聯和類/實例成員之間的鏈接的問題:基本上每個引用另一個類的成員都是一個關聯(即使像Java中的StringInteger這樣的基本包裝通常不計數)。

+0

+1爲簡單關聯。 UML 2.0中聚合已經被刪除,所以你通常不必考慮它們。 – 2012-01-27 13:53:22

1

關聯意味着存在關係。聚合/合成進一步細化了一些額外的細節。

聚集意味着存在一種關係,但是對於父母而言,沒有關於依賴實體的生命週期管理的已知限制。

組合意味着有一個關係,父對象負責依賴實體/實體的生命週期管理。

-1

只是爲了總結本網頁上我的意見:

  • 在Java中,大部分的時間實例變量被表示爲UML常規關聯。
  • 在UML 2.0聚合已被丟棄,所以你不必擔心。 似乎聚合已被刪除,但又被添加回來。
  • 組合在Java中很少出現,因爲您必須保證子對象在其父「死亡」後不被使用。這通常要求在父母的獲得者和深度克隆上傳遞防禦性副本。在其他語言中,它們更常用。
+0

我讀過的有關UML 2.0的文檔定義了聚合。你在UML 2.0中讀到的集合已經被刪除了嗎? – 2012-01-27 14:42:52

+0

當然,聚合和組合不會在UML 2中刪除 - 請參閱基礎結構文檔中的關聯包中的角色(屬性)。 – Christian 2012-01-27 15:51:41

+0

請閱讀此處:http://books.google.com/books?id=ESQGjpQiLX4C&pg=PA50&lpg=PA50&dq=aggregations+dropped+UML+2.0&source=bl&ots=X6__MQmpri&sig=NBy5ruMPfqM46r4YQFXwyvO0-Tk&hl=zh-CN&redir_esc=y – 2012-01-30 15:18:10