2016-04-25 51 views
0

我有一個類圖,它有一個字典(以python術語)作爲屬性。這是基本的結構:在類圖中表示HashMap

serverEntry = { creditCardObj1 : accountBalance1, creditCardobj2 : accountBalance2, ...} 

爲了澄清,creditCardObj1是一類信用卡式的一個實例,同時accountBalance1是一個整數值,並類似地用於在詞典中的其它條目。

我讀到,在Java中,它被稱爲HashMap。無論如何,我想在我的UML類圖中實現它。任何提示如何做到這一點。我使用的是Visio 2007,所以如果有人能夠以此解釋,它將更有幫助。

+0

除非我在這裏發表評論,否則您可能不會收到我的新答案的通知。請看下面。 –

回答

-1

沒有單一的事實,它只是一個設計決定。這裏有幾個變種:​​

enter image description here

如果你只是想表示你的Python應用程序代碼中的哈希,你可以簡單地用簡單的類去這只是它的名字告訴正確的,它代表了哈希值。因爲你不需要實現散列(它已經在Python解釋器中完成了),那很好。

如果你要實現Python解釋器,你需要顯示如何做到這一點的細節。中間類只是使用兩個數組和鍵和對象引用。左邊的一個使用捆綁在一個單獨的類中的鍵/對象。顯示哈希實現可能有更多的方法。

+0

謝謝。我正在考慮使用中間實現,但在我看來,鍵和值之間沒有明確的關係。這是通過使用散列命名法還是有一種方法來顯示映射?否則,我將只使用最左邊的執行 – SpiderWasp42

+0

我建議使用正確的。命名約定很好。你在Python代碼中需要知道的是,你使用了散列。這就清楚地表明你正在使用唯一的鍵/值對。中間實現實際上只是一個非常簡單的實現,肯定不會在Python解釋器本身中使用。 –

1

我不會付出太多的努力,因爲另一個答案已被選中。這個答案並沒有涵蓋UML中最接近HashMap的東西:修飾符。它被繪製成類和關聯之間的矩形。矩形內是名稱和類型。這意味着,如果給定一個這種類型的實例,該關聯將在關聯的另一端產生一些事物的實例。該實例的數目用多重性指定。

爲了您的目的,您需要將creditCard: CreditCard放入限定符矩形內,Integer放置在該關聯的另一端,其重複次數爲1

0

我相信這個問題更多的是關於UML而不是關於編程語言。因此,請允許我使用我感覺更舒服的語言。

C#調用它太詞典,Dictionary<string, T>例如用stringHashKey。 Visual Studio中的UML類圖(我在這裏使用的是VS 2015的社區版)幸運地足夠接近代碼,以便UML模型基本上是語言的元模型,而圖僅僅是與真實代碼不同的視圖。

這很方便,因爲真正的編程問題 - 就像您要求的那樣 - 可以直接在圖中解決。 (另外:不需要額外的代碼生成或額外的解析來獲得或維護圖)。

我喜歡Visual Studio解決這個問題的方式。他們提供了兩個選擇,一個是集中更多的技術細節(show as Association

enter image description here

和被集中更多的域(show as Collection Association)之一。

Show as Association

我通常使用的第一個

只有當我需要的圖強調的是Dictionary類參與,在第二個選項是我的優先選擇其他所有情況下。