2009-07-28 72 views

回答

1
   MyServer 
       | 
       | 
       | 
       Map 
       | 
       | | 
       | | 
    MyClientTypeKey MyClientType 

豈不是像上面很簡單?

  • 的MyServer有一對一assoication與地圖
  • 地圖上有1個與鍵和值都許多聯想。
+1

這也是我首先想到的,但是感覺這張地圖不適合成爲一個班級。這只是一種遏制的方法。我不知道,只是覺得不對。 – gooli 2009-07-28 08:50:46

+0

但是,只是說,直接與MyServer關聯的鍵和類型類並不顯示它們的相關性。 Map是一個容器,但也顯示了鍵和類型之間的關係。 – Mark 2009-07-28 09:21:38

7

我只是在MyClient端顯示MyServer與MyClient之間的關聯,其重合度爲0 .. *。其他一切都是實現細節,可以留給程序員。

+0

這是兩個正確答案之一。另一個是@Kru。 – 2014-03-04 01:48:29

1

首先,我和其他一些人認爲,UML應該包含一些基本的集合類型,就像它在一些早期版本中那樣。他們可以採取例如從OCL ...

的「EMF辦法」似乎是正確的,但它給恕我直言,過分重視類型,這是真的不重要恕我直言,所以我只是模型作爲一個關聯類。這將使您能夠捕獲所有可以使用常規類捕獲的地圖特定約束(例如多重性),但不會使該類與其他類一樣重要。

23

您可以使用一個合格的關聯關係:

┌──────────┐    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值的關聯。相比之下,合格的關聯表示任何給定的鍵只與一個值相關聯,並且您不能將鍵設爲缺少值。

1

克魯的答案是最好的,但它仍然只暗示一個地圖。

我認爲這取決於您的圖表所在的抽象級別。如果它比較高,我會用黑猩猩的迴應。如果是比較低的,你真的需要顯示在地圖,故意展示實施有關的細節,我會用下面去:

  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
      / \ 
      1/  \1 
     Key  Value 

如何地圖,然後在代碼實現的是完全不相關(T1toT2運行 - 時間對象可能實際上並不會)。

正如Gabreil提到的,這可能是也可以使用關聯類

  MyServer 
       | 
       | 
       Map     
       | 
       |* 
      T1toT2 
       | 
       | 
      1--------1 
     Key  Value 

當然建模是唯一的問題,如果你真的真的需要顯示或指定的地圖。