转换将关联关系转换成 C++ 代码中的成员变量。对于非组合关联,转换向属性的类型限定词添加指针符号(*)。如果指定了多重性并将其设置为特定数字(上限与下限相同),则转换向属性添加数组规范。
转换使用以下关联关系端属性来生成代码:
属性 |
C++ |
名称 |
创建具有指定名称(执行名称验证)的新的成员变量 |
可视性 |
确定生成的成员变量的可视性 |
缺省情况下,转换将为 UML 泛化关系的目标生成公共继承。 转换在生成的头文件中自动包含目标的头文件。C++ 转换支持多重继承。
可以应用 cpp_generalization 构造型来指定给定泛化关系的可视性(公共、保护、私有和缺省)。
通常,“用途”关系表示对类或枚举的引用。缺省情况下,用途关系转换成生成的头文件中的向前引用和主体文件中的“include”伪指令。
如果应用 cpp_dependency 构造型并将它的 isInclusionInHeader 属性设置为 true,则转换在头文件中生成包含伪指令。
通过将 cpp_friend 构造型应用于关系,可以使用“用途”关系来指明类之间的“友元”关系。转换在生成的头文件中包含“friend”子句(例如“friend class Class1;”)。转换不生成“友元”函数的体存根,并向生成的代码自动添加友元类上的依赖关系。
UML 类可实施 UML 接口。该关系将成为 C++ 类上的公用继承。
转换将具有模板参数的 UML 类转换成模板类。
转换将与 Class1 的目标具有“绑定”关系的 UML 类视作模板类 Class1 的实例化。转换使用绑定关系指定的参数替换将形参解析成实参。
如果一个类具有多个“绑定”关系,会出现警告。如果一个类具有多个绑定关系,转换使用第一个绑定关系生成代码。
转换向实例化的类包含列表添加实参的数据类型。
下图说明了转换支持的实例化关系,其中一个类是参数化的类,另一个类是实例化的类。
转换不支持更复杂的模板类的用途模式,包括用作形参的模板和参数化类中的静态变量。