2014-02-22 31 views
0

我知道,有人問過關於這種情況的相同問題,但我仍然沒有真正明白,我需要一個具體的答案。謝謝:D類圖中組合和依賴之間的區別?

+0

真的,組成和依賴之間的區別是沒有問題的。所以,採取+1並歡迎StakeOverflow。但下一次找到第一個是什麼,第二個是什麼,結果就是你有差異。只有你不明白它,問。 – Gangnus

回答

1

這些東西彼此很遠。

A- - - ->B Dependency 

是最常見的事情。這意味着,A的代碼是提防類B.而在可見A B成員的變化可能需要在A的變化

A------->B association (with none aggregation) 

協會更密切的聯繫。該協會可以有不同程度的親密度,但即使是最弱的一個,它也必須至少有一個導航箭頭。 (如果它們是雙面的,則不顯示)。這意味着,存在從A指向B的一些簡單方法。例如,存在a.x.y.b的構造。 該關聯具有聚合等屬性。它可能是none,shared,composition

A<>------>B association (with shared aggregation) 

共享沒有嚴格的定義,它留給我們建模者和工具作者。但通常它表明,在某些意義上的實例或類有B的某些情況下

A♦------>B association (with composite aggregation or simply 'composition') 

它有嚴格的定義 - 這意味着,A或它的實例有B.這也意味着的情況下,這些B的只存在於這個協會的邊界。當該協會或其所有者將被銷燬時,將不能訪問這些B。如果這些嚴格的要求不能滿足,那不是一個組合。

引文從UML標準2.5: 「複合凝聚是聚集的強有力的形式,需要一個部分(見11.2.3)實例在在時間至多一個複合實例被包括在如果一個複合實例被刪除。 ,其所有部分通常會被刪除

associations的其他變體也存在依存關係。

所以,依賴是組合的所有者的祖先。

3

由於Gangnus沒有正確解釋構圖的含義,我必須這樣做。

正如Gangnus解釋的,聚合關聯用的部分 - 整體關係預期含義的一種特殊形式,但沒有精確的語義(UML的規範說:「精密共享聚合的語義因應用程序區域和建模者而異)「)。例如,我們可以建模類別CarEngine之間以及類別CourseLecture之間的聚合,因爲引擎是汽車的一部分,講座是課程的一部分。

組合物(也稱爲「複合聚合」在UML規範)是聚合的一種特殊形式,其中一個組件實例是至多一個骨料實例的一部分在時間(即,它不能在幾個總量之間共享)。這意味着CarEngine之間的聚合是一種構圖(因爲引擎不能同時在兩輛汽車之間共享),而CourseLecture之間的聚合不一定是一種構圖,因爲講座可以在兩個課程之間共享(例如數據庫管理課程和軟件工程課程可以分享關於UML的講座)。這意味着組合關聯在組合關係端的多重性爲10..1,而在非組合聚合的情況下它也可以是*

除了組合物的這種主要特徵(具有專有部分),組合物可能還附帶的總量及其組分暗示的是,當聚集體被刪除之間的生命週期依賴 ,它的所有部分都會被刪除。然而,這隻適用於某些構圖的情況,而不適用於其他情況,因此它不是一個定義性的特徵。 UML規範指出:「在複合實例被刪除之前,可能會從複合實例中刪除一部分,因此不會將其作爲複合實例的一部分進行刪除。」在我們的例子中,很明顯的情況是,在汽車被毀壞之前,發動機可以從汽車上拆下來,在這種情況下,發動機不會被破壞並且可以重新使用。

+0

「正如Gangnus所解釋的那樣,聚合是一種特殊的關聯形式」。謝謝,但事實並非如此。 「一個屬性具有聚合屬性」*(UML st.2.5)*。所以,正如我剛纔所說的,聚合是屬性(屬性是屬性)的關聯。這不是排序或協會形式。 – Gangnus

+0

我使用自然語言和常識,而你似乎更喜歡UML說話。但即使在UML 2.5中,他們在第209頁上也表示:「二元關聯可能代表一個複合聚合(即整體/部分關係)。」 –

+1

當然,如果你想更簡單,更簡單地說話,每個人都會以這種方式理解你。但問題在於定義,而且應該嚴格設定。順便說一句,雙方的討論總是認爲他們正在使用常識。所以,把常識作爲一個參數來調用,看起來好像你想冒犯別人。 – Gangnus

1

這很簡單。 依賴關係是沒有運行時語義暗示的定向關係的類型。它說,一個元素(依賴關係源)的定義是語義上或結構上依賴於目標元素定義的 。沒有運行時語義含義意味着在現實世界中沒有實例。 (例如,依賴於某人的人無法通過模型中的依賴關係連接:)

組合是一種複合聚合類型的關聯。它可以有一個實例(運行時語義含義)爲了更準確,它是關聯中的屬性元素結束設置爲組合。你可以在世界的任何地方找到作文。很好的例子是人體......它是頭部,手臂,腿部的組成部分...... 零件不能與其他相同類型的成分物理連接。如果零件也存在,人體就會存在。

相關問題