2010-09-10 52 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框。

我会尝试使用您选择的工具反向设计带有地图的简单代码示例,并查看该工具为您生成的内容。如果你不喜欢它,只要想一想你可以做些什么来真正提供问题的洞察力,以及你可以使用的工具。