可以将 cpp_namespace 构造型应用于模型。可以使用构造型的 NamespaceName 属性来指定模型中所有元素的名称空间。
UML 包变成目标项目(以及文件系统上相应的文件夹)中的文件夹。 转换将包的元素放入包文件夹。
转换忽略标记为分析包的包。用户通过将 <<perspective>> 构造型应用于包或通过应用关键字“analysis”或“Analysis”,来将包标记为分析包。
类似于模型,可以将 cpp_namespace 构造型应用于包来指定包中所有元素的名称空间。转换目前不支持嵌套名称空间。在内部包中指定的名称空间取代在外部包中指定的名称空间。
如果在相同模型级别上,两个 UML 包具有相同名称,则转换只在文件系统上创建一个文件夹,并将两个 UML 包的内容放入该文件夹。
对于 UML 类,转换生成一对文件:头文件和主体文件。如果必要,转换将类名转换成符合 C++ 规则的名称并确保它是唯一的。主体文件始终包含相应头文件的 include 伪指令。缺省情况下,生成的头文件具有文件名 <ClassName>.h,而生成的主体文件具有文件名 <ClassName>.cpp。
泛化关系和关联关系影响代码生成。有关更多信息,请参阅“UML 关联关系”和“UML 泛化关系。”
可以将以下构造型应用于 UML 类:
· cpp_struct:此构造型生成 C++ struct 而不是类。
· cpp_union:此构造型生成 C++ union 而不是 C++ 类。C++ 概要文件允许嵌套联合是匿名的。缺省情况下,不对联合生成标准操作。
· cpp_typedef:此构造型生成 C++ typedef 而不是 C++ 类。应该使用构造型的“ImplementationType”属性来指定定义的类型的签名。
转换将 UML 枚举转换成 C++“enum”。 C++ 枚举的名称取自 UML 枚举。如果必要,转换将枚举名转换成符合 C++ 规则的名称并确保它是唯一的。转换生成 UML 属性作为 C++ 属性,并应用来自模型的缺省值。
不同于 UML 类,转换只生成枚举的头文件。
类可以具有嵌套类和枚举。转换生成类嵌套对象(类似于它们的非嵌套副本)。但是,转换不为嵌套对象创建单独的头文件和主体文件;它添加到包含对象的类的头文件和主体文件。
嵌套类和枚举也具有以下差别:
· 父元素跟踪其嵌套元素的可视性
· 将嵌套元素的 include 伪指令添加到包含元素的类的 include 伪指令
· 嵌套元素的操作主体以包含元素的类的名称为前缀。
· 嵌套元素的静态属性定义也包括包含元素的类的名称