如何在UML图中表示STL图?

如何在UML图中表示STL图?,uml,diagram,Uml,Diagram,可能重复: 我想在UML图中为STL映射添加一个符号。您可以将其视为本机数据类型。 大多数情况下,没有理由做其他事情 这里没有“对”或“错”。唯一的问题是,是什么让团队更容易理解体系结构。取决于您想要建模的内容和方式。我曾多次对包含映射到映射存储元素的类的合成/聚合关系进行建模,并向该关系添加了一个属性: class MyEnclosingType { std::map<int,MyEnclosedType*> m_map; }; MyEnclosingType <&

可能重复:


我想在UML图中为STL映射添加一个符号。

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


这里没有“对”或“错”。唯一的问题是,是什么让团队更容易理解体系结构。

取决于您想要建模的内容和方式。我曾多次对包含映射到映射存储元素的类的合成/聚合关系进行建模,并向该关系添加了一个属性:

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

MyEnclosingType <>-------------------------- MyEnclosedType
                         << map >>
MyEnclosingType类{
std::map mu map;
};
MyEnclosingType-----------------MyEnclosedType
>
根据您使用的工具,有些人会识别它。例如,BoUML、IIRC将自动绘制类似于以下内容的内容:

MyEnclosingType <>-------------------------- MyEnclosedType
                              ^
                              |
                              | << bind Key=int >>
                              |
                             map 
MyEnclosingType------------------MyEnclosedType
^
|
| >
|
地图
我不认为它完全是那样的,但在某种程度上是相似的。最后,UML是供人们阅读的工具,而不是供计算机使用。如果您确实相信代码生成(祝您好运),那么问题是您的软件需要使用什么奇怪的构造来理解您的意图

其他一些工具将具有STL或允许您添加参数化类型,您可以使用它来表示与以下相同的代码:

                                                 Key=string
                                                 Value=MyEnclosedType
MyEnclosingType <>-------------------------- map
Key=string
值=MyEnclosedType
MyEnclosingType-----------------映射
其中,
MyEnclosingType
map
都将由实心框包围,
Key
Value
将由一个不连续的框表示,与其他参数化类型一样,该框与
map
框重叠


我会尝试用你选择的工具对一个简单的代码示例和一个映射进行反向工程,看看这个工具为你生成了什么。如果你不喜欢它,只要想想你能做些什么,用这些工具让你尽可能多地洞察问题。

我完全同意。像UML这样的标准试图定义一组标准规则,使其更容易解释体系结构(作为一种良好实践或常识的集合)。但最终,你的团队必须理解这一点,如果需要偏离标准以使其更清晰,那么就没有必要坚持标准。(我刚刚意识到:如果我们都坚持计算机历史上的标准,我们仍然会使用Cobol)。已经在这里询问并回答: