如何在UML图中表示STL Map?

时间:2010-09-10 06:38:57

标签: uml diagram

  

可能重复:
  How to describe a contained map in UML class diagram?

我想在UML图中使用STL MAP表示法。

2 个答案:

答案 0 :(得分: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框重叠的不连续框表示与其他参数化类型一样。

我会尝试使用您选择的工具使用地图对一个简单的代码示例进行逆向工程,并查看该工具为您生成的内容。如果您不喜欢它,只需考虑您可以采取哪些措施来实际提供对问题的深入了解,就像您可以使用这些工具一样。

答案 1 :(得分:3)

您可以将其视为本机数据类型。 大多数时候没有理由做其他事情。

这里没有“正确”或“错误”。唯一的问题是什么使团队更容易理解架构。