在Enterprise Architect中使用C++ STL

MOn*_*DaR 7 c++ uml stl std enterprise-architect

如何在Enterprise Architect中使用部分C++ STL?
能够将某些类属性指定为std::string或使用std::auto_ptr(或甚至std::tr1::shared_ptr)作为类型将是很好的.

另一个有趣的事情是怎样一个能够整合容器类型,如std::vectorstd::map成EA.

小智 3

我已经教过 STL 容器在 EA 中的样子,我想它也可以扩展到 stl 指针:

正向工程:

您可以在语言设置中全局定义不同多重性的集合类,或者为项目的特定类(这将定义它如何“包含”在其他类中)这种方式。简单示例设置:

将所有集合类设置为 std::vector

确保为关联的目标类而不是源设置容器类。将目标角色多重性设置为多个(根据代码模板,与0、0..1、1和空字段不同)。另外,将关联的目标角色的包含设置为值避免生成指向容器的指针。

另一种更灵活的方法是修改Settings -> Code Generation Templates中的代码模板。我相信有一种方法可以覆盖构造型连接器的默认模板,尽管我从未尝试过。这可能是生成 STL 指针的唯一方法,因为 EA 仅将集合类定义用于大于 1 的重数。

逆向工程

转到“工具”->“选项”->“源代码工程”->“C++”,并将以下字符串附加到“其他集合类”:

vector<#TYPE#*>;deque<#TYPE#*>;list<#TYPE#*>;stack<#TYPE#*>;queue<#TYPE#*>;priority_queue<#TYPE#*>;set<#TYPE#*>;map<*,#TYPE#*>;multiset<#TYPE#*>;multimap<*,#TYPE#*>;
Run Code Online (Sandbox Code Playgroud)

我从未尝试过,但我认为向此添加 STL 指针是微不足道的。

往返工程

如果你做往返工程,我不知道上面的方法是否有效。我认为定义不对称这一事实会引起问题。