我有一個MyServer類,它包含一個Map,其鍵是MyClientType對象,其值是MyClient對象。我想在類圖中描繪這種關係,但我無法找到一個乾淨的方式來做到這一點。如何在UML類圖中描述包含的地圖?
回答
MyServer
|
|
|
Map
|
| |
| |
MyClientTypeKey MyClientType
豈不是像上面很簡單?
- 的MyServer有一對一assoication與地圖
- 地圖上有1個與鍵和值都許多聯想。
我只是在MyClient端顯示MyServer與MyClient之間的關聯,其重合度爲0 .. *。其他一切都是實現細節,可以留給程序員。
這是兩個正確答案之一。另一個是@Kru。 – 2014-03-04 01:48:29
MyServer
|
|*
T1toT2
/ \
1/ \1
Key Value
馬克的解決方案不同的是,該服務器具有多對多關係的容器。那也是如何的Eclipse Modeling Framework (EMF) proposes to implement maps。
您可能還會拋出一些更多的UML特定的東西,例如指定鍵必須是唯一的(通過構造型)。
首先,我和其他一些人認爲,UML應該包含一些基本的集合類型,就像它在一些早期版本中那樣。他們可以採取例如從OCL ...
的「EMF辦法」似乎是正確的,但它給恕我直言,過分重視到類型,這是真的不重要恕我直言,所以我只是模型作爲一個關聯類。這將使您能夠捕獲所有可以使用常規類捕獲的地圖特定約束(例如多重性),但不會使該類與其他類一樣重要。
您可以使用一個合格的關聯關係:
┌──────────┐ 1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘ └───────┘
參見:http://etutorials.org/Programming/UML/Chapter+6.+Class+Diagrams+Advanced+Concepts/Qualified+Associations/(因爲它是很難用ASCII繪製)
還要注意的是合格的關聯變化的多樣性:
┌──────────┐ 0..* ┌───────┐
│ MyServer │───────────────│ Value │
└──────────┘ └───────┘
┌──────────┐ 1 ┌───────┐
│ MyServer │Key│───────────│ Value │
└──────────┘ └───────┘
頂部顯示了從服務器到0-n值的關聯。相比之下,合格的關聯表示任何給定的鍵只與一個值相關聯,並且您不能將鍵設爲缺少值。
克魯的答案是最好的,但它仍然只暗示一個地圖。
我認爲這取決於您的圖表所在的抽象級別。如果它比較高,我會用黑猩猩的迴應。如果是比較低的,你真的需要顯示在地圖,故意展示實施有關的細節,我會用下面去:
MyServer
|
|
Map
|
|*
T1toT2
/ \
1/ \1
Key Value
如何地圖,然後在代碼實現的是完全不相關(T1toT2
運行 - 時間對象可能實際上並不會)。
正如Gabreil提到的,這可能是也可以使用關聯類
MyServer
|
|
Map
|
|*
T1toT2
|
|
1--------1
Key Value
當然建模是唯一的問題,如果你真的真的需要顯示或指定的地圖。
- 1. 如何在UML類圖中描述指向類的指針?
- 2. 如何在UML類圖中描述這些類型?
- 3. 如何只包含餅圖圖例中每個類別的長描述?
- 4. 如何在UML序列圖中描述C#收益率回報?
- 5. 如果GUI類被包含在UML的類圖中
- 6. 如何描述UML中的嵌套動作/活動活動圖
- 7. 繪製描述UML圖與繼承
- 8. 如何在UML圖中包含比較器類
- 9. 如何在Android中包含以下圖像中描述的平方根符號?
- 10. 動態地在php中包含多個文件的圖像描述
- 11. 在LINQ結果中包含ENUM描述
- 12. 描述協會類圖
- 13. 可以包含在android地圖應用中的地圖類型
- 14. 圖片庫含有很長的描述
- 15. 如何在openerp視圖中包含類?
- 16. 在UML中描述類之間的朋友關係
- 17. UML類圖模型:在不同的包
- 18. 如何在UML類圖中表示lambdas?
- 19. 如何在UML圖中顯示此類?
- 20. 如何從系統中的用例描述中提取類圖?
- 21. 如何描述protobuf中的地圖和列表?
- 22. Drupal - 在搜索中包含分類術語描述
- 23. 如何在描述中包含C數組
- 24. 如何將提交描述包含在--pretty git log中?
- 25. 如何獲取包含所有dba包的描述的列表
- 26. 包含地圖
- 27. 如何使用UML類圖
- 28. 如何在UML中描述表格拓撲?
- 29. Doxygen,如何描述Java包
- 30. 如何打印圖片庫的描述
這也是我首先想到的,但是感覺這張地圖不適合成爲一個班級。這只是一種遏制的方法。我不知道,只是覺得不對。 – gooli 2009-07-28 08:50:46
但是,只是說,直接與MyServer關聯的鍵和類型類並不顯示它們的相關性。 Map是一個容器,但也顯示了鍵和類型之間的關係。 – Mark 2009-07-28 09:21:38