簡體   English   中英

UML類圖:添加用於實現關系的字段嗎?

[英]UML class diagram: to add fields used to implement relationships or not?

我試圖弄清楚在特定類的字段中是否引用了與此類相關的對象/集合。

假設我有一所大學,匯集了許多Student類實例。 當我把兩個類都放在圖表上時,我在它們之間添加了聚合關系。

現在的問題是:我可以在大學里添加一個類似“學生:學生[]”的字段嗎? 我一定要嗎? 也許我不可以嗎?

預先感謝,皮奧特

這取決於您對模型進行的操作,但是通常,您不必為此使用屬性,而可以使用關聯。 關聯能夠包含有關屬性的更多信息,例如它們是復合屬性還是共享屬性,兩端是否可導航,兩端的多重性,命名的端點等。

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

因此,在您的情況下,大學擁有學生,因此您將在大學與學生之間建立關聯,命名每個端點並正確設置多重性。

現在,當您從模型中生成代碼時,只需確保考慮關聯和屬性即可。 這樣,您將不需要同時將屬性作為關聯和屬性添加為屬性和關聯。 我有一些圖表已經測試過這種方法,通過xsl轉換從xmi生成sql和php代碼,並且效果很好...如果您想了解更多細節,我可以對其進行挖掘。

屬性在UML 2中擁有關聯屬性。這是新的,並不總是很容易理解這個概念。 在看完下面的演示之前,我不明白為什么我們需要一個屬性。 黃金法則是應創建屬性以將關聯信息保存在模型中。 我在UML 2中找到了一個有趣的關於關聯和聚合的教學課程。

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

上面的關聯創建是針對專家級別的,我的意思是希望獲得簡潔設計和簡潔模型以及完美元模型的建模者。 如果您不在乎,則只需在模型級別創建一個關聯即可,它可以完成工作,但是代碼生成不會完成。 這意味着開發人員稍后需要在代碼級別創建數據庫映射。 要了解這兩種關聯之間的區別,請參見以下其他Flash演示: http : //www.download-omondo.com/association.swf

關系分為3種類型:關聯,聚合和組合。 組合是聚合的一種專業,聚合是一種關聯的專業。

使用一個或另一個取決於您的分析階段。 您可以只在初稿中使用關聯,然后在以后將其細化為聚合或合成,與聚合的區別在於,學生在一個大學宇宙中沒有任何意義。 如果有幾個大學實例,那將是聚合。

如果使用關系,則沒有必要,也不應添加students [],因為它是多余的。 如果這樣做,您將失去三種關系類型的語義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM