2010-07-05 65 views
2

我想弄清楚是否把這個類的對象/集合的引用放在特定類的字段中是正確的。UML類圖:添加用於實現關係的字段嗎?

比方說,我有一個大學聚集許多學生類的實例。當我把兩個類放在我的圖上時,我在它們之間添加了聚合的關係。

現在問題:我可以在大學添加像'students:Student []'這樣的字段嗎?我一定要嗎?或者,也許我不能?

由於提前, 彼得

回答

0

在UML 2中使用它自己的關聯屬性。這是新的,它並不總是容易理解這個概念。我不明白爲什麼我們需要一個屬性,直到我看到下面的演示。 黃金法則是應該創建屬性以保存模型中的關聯信息。我發現對關聯和聚合了一個有趣的教學會議在UML 2

這是一個2分30秒flash演示 http://www.download-omondo.com/AggregationAndComposition.swf

上述協會的創建是專家級的,我的意思是建模誰願意簡潔的設計和清潔模式以及完美的元模型。如果你不在乎,那麼只需在模型級創建一個關聯,它可以完成這項工作,但代碼生成將不會完成。這意味着開發人員需要在代碼級別創建數據庫映射。 要了解兩種關聯之間的區別,請參閱以下其他Flash演示:http://www.download-omondo.com/association.swf

0

這取決於你與你的模型做什麼,但一般來說,你不應該使用這個屬性,你可以使用關聯來代替。關聯可以包含更多屬性信息,例如它們是複合還是共享,哪些結尾是可導航的,每端有多重性,有終點名稱等。

關聯的一個好處是一個關聯實際上可以表示一個關聯屬性與它所連接的每個類相關聯,而屬性僅表示它所屬類的屬性。

因此,就你而言,大學有學生,所以你應該畫一個從大學到學生的協會,命名每個端點並正確設置多樣性。

現在,當您從模型中生成代碼時,請務必考慮關聯以及屬性。這樣,您不需要將屬性作爲屬性和關聯添加,就像關聯一樣。我有幾個圖我已經測試了這種方法,通過xsl轉換從xmi生成sql和php代碼,並且它工作得很好......如果您想了解更多詳細信息,我可以將其挖掘出來。

0

有三種關係:關聯,聚合和合成。構圖是一種聚合的專業化,聚合是一種關聯的專業化。

使用一個或另一個取決於您的分析階段。您可以在第一稿中使用關聯,然後再將其改進爲聚合或合成,與聚合的區別在於,學生在一個大學宇宙中沒有意義。如果有幾所大學的實例,那就是聚合。

如果您使用關係,則不需要添加學生,因爲它是多餘的。如果你這樣做,你就失去了三種關係的語義。