2010-09-10 78 views

回答

3

您可以將其視爲原生數據類型。大多數時候沒有理由做其他事情。

這裏沒有「正確」或「錯誤」。唯一的問題是什麼讓這個架構更容易被團隊理解。

+2

我完全同意。像UML這樣的標準試圖定義一套標準規則,使其更容易解釋架構(作爲一種良好實踐或常識的集合)。但最終,你的團隊必須理解它,如果需要偏離標準來使其更清晰,則不需要遵守標準。 (我剛剛意識到:如果我們都會堅持計算機歷史上的標準,那麼我們仍然會使用Cobol)。 – Patrick 2010-09-10 06:51:29

4

取決於你想要的模型和方式。我有很多次只是仿照包含地圖的地圖存儲的元素之類的成分/聚合關係,並添加到關係的屬性:

class MyEnclosingType { 
    std::map<int,MyEnclosedType*> m_map; 
}; 

MyEnclosingType <>-------------------------- MyEnclosedType 
         <<map>> 

根據您正在使用,一些不承認它的工具。例如BoUML,IIRC,會自動繪製與此類似:

MyEnclosingType <>-------------------------- MyEnclosedType 
          ^
           | 
           | << bind Key=int >> 
           | 
          map 

我不認爲這是完全一樣的,但不知何故相似。最後,UML是人們閱讀的工具,而不是電腦。如果你確實相信代碼生成(好運),那麼問題是你需要用什麼奇怪的構造來爲你的軟件理解你的意圖。

的一些其他工具將有STL或允許您添加參數化類型,你可以用它來表示同一代碼:

            Key=string 
               Value=MyEnclosedType 
MyEnclosingType <>-------------------------- map 

如果雙方MyEnclosingTypemap將通過實線框包圍,並KeyValue將由與其他參數化類型重疊的不連續框來表示map框。

我會嘗試使用您選擇的工具反向設計帶有地圖的簡單代碼示例,並查看該工具爲您生成的內容。如果你不喜歡它,只要想一想你可以做些什麼來真正提供問題的洞察力,以及你可以使用的工具。