2009-09-14 61 views
2

當我有一個Map成員的類時,我不想繪製一個單獨的類/接口對象來表示Map本身,但我更願意將它看作是本機類型,而不是一個複雜的對象。如何在UML中表示Map類成員?

請看下面的例子

public class IndexManagerImpl implements IndexManager { 
    /* ... */ 

    private static Map<Searcher, Integer> searcherCache; 
} 

我想強調的IndexManagerImpl持有(雖然間接)引用Searcher實例的事實。 如果表示也可以顯示searcherCache的類型參數,那將是非常好的。

回答

2

不贊同Martin ... MAP是我們在任何計算機畢業課程中學習的基本數據結構!它存在於大多數現代語言中,並且是分析師的重要設計資源。在某些情況下,地圖可能會繪製爲關聯,但是需要某種擴展(構造型),或者您可以定義模板類。我不喜歡模板方法 - 它隱藏了主要參與者的協會。 最後一個資源是AssociationClass,一個特殊的UML類,用於定義與屬性的nxn關係,我認爲適合您的問題,其中「整數」字段是與indexManager相關的搜索者的某種計數器。 還請記住,通過代碼,您不能看到關係的另一面,而UML旨在顯示雙方,導航問題等等。

0

實際上,集合對象表示兩個類之間的一對多關聯。 因此,您應該在您的圖上有一個與Searcher類具有一對多關聯的IndexManagerImpl類

+0

我同意你的看法,並使用一個一對多的關聯,如果我不得不應付一個普通列表(或一組,以及)。 在我看來,一張地圖更加複雜:如果我使用了一個關聯,我會失去地圖的關鍵價值本質。 – abahgat 2009-09-14 16:28:49

+1

我不確定是否有一種標準的方式來將地圖顯示爲關聯,但我認爲您可以使用原型來創建地圖的自定義關聯類型 – Beatles1692 2009-09-14 16:31:00

+1

UML模型是一種抽象,不應該與語言習語綁定。在這種情況下,MAP是一種語言習慣用語(內置於Java的一部分)。大多數工具支持使用配置文件實現語言,這將提供內置的複雜類型。 – 2009-10-07 15:55:05

-1

地圖不能被視爲集合,因爲它們具有與集合不同的屬性。實際上,地圖是具有特定(映射)關係的多個集合。在我看來,表示地圖高度依賴於需求,根據您的需求可能會有幾個地圖UML表示。 因此,在簡單的表單中,可以表示映射關係,一對多關聯到鍵集元素和一對一關鍵集元素到值元素的關聯。 其中關鍵元素和值元素是原始元素的包裝,因爲關聯實際上並不與原始元素相關。

希望這有助於....

+0

UML不應該與Data結構綁定。 – ForceMagic 2012-12-07 19:27:03