UML 到 Java 的转换将 UML 2.0 规范转换成 Java 类。可以使用转换从 UML 2.0 规范生成 Java 项目。也可以在初始生成后应用转换,合并更新的 UML 模型和现有 Java 代码。
以下过程显示了 Java 转换的最简单的用法。
要将 UML 模型转换成 Java:
1. 切换到“建模”透视图。
2. 在“模型资源管理器”视图中,右键单击 UML 类(如 Class1)。
3. 单击转换 > 执行转换 > UML2 到 Java。
4. 运行转换对话打开。单击创建目标容器按钮。
5. 新建 Java 项目对话打开。在项目名称字段中输入“简单”并单击完成。
6. 在运行转换对话中,单击完成。
新的 Java 项目包含缺省包,该包包含新的 Java 类:Class1。
转换也可执行几个其它的更复杂的功能,如覆盖名称而不修改源模型,将 UML 对象替换为可视化对象,合并 UML 模型中的变更和 Java 源以及验证 UML 模型以查找潜在的转换问题。
UML | Java |
包 | 具有相同的 name* 的 Java 包 |
定型为 <<perspective>> 的包 | 忽略 |
带有关键字 <<Analysis>> 或 <<analysis>> 的包 | 忽略 |
类 | 具有相同 name* 和可视性的 Java 类 |
(类)isLeaf 属性 | 如果为 true,Java 类是“最后”的 |
(类)isAbstract 属性 | 如果为 true,Java 类是“abstract” |
(类)泛化关系 | Java 类“扩展指定超类 |
实施 | Java 类“实施”指定接口 |
接口 | 具有相同 name* 和可视性的 Java 接口 |
(接口)泛化关系 | Java 接口“扩展”指定接口 |
操作 | 具有相同 name* 和可视性的 Java 方法 |
(操作)isStatic 属性 | 如果为 true,Java 方法是“static” |
(操作)isAbstract 属性 | 如果为 true,Java 方法是“abstract” |
(操作)isLeaf 属性 | 如果为 true,Java 方法是“final” |
(操作)具有与类相同的名称 | Java 构造函数 |
(操作)构造成 <<create>> | Java 构造函数 |
参数 | 具有相同的 name* 的 Java 参数 |
(参数)类型属性 | Java 参数具有指定类型,该类型可以是另一个类或基本类型 |
(参数)方向属性 | 如果设置为“return”,Java 方法具有“return <param type>”;否则向方法签名添加“<param type> <param name>” |
(参数)多重性属性 | 请参阅包含关于多重性信息的下表 |
属性 | 具有相同 name* 和可视性的 Java 字段 |
(属性)isStatic 属性 | 如果为 true,Java 字段是“static” |
(属性)isLeaf 属性 | 如果为 true,Java 字段是“final” |
(属性)类型属性 | Java 字段具有指定类型,该类型可以是另一个类或基本类型 |
(属性)多重性属性 | 请参阅包含关于多重性信息的下表 |
* 某些字符在 Java 标识符中是无效的(如间隔)。Java 转换将无效字符自动替换为下划线(_),以创建有效标识符。此替换可能引起名称冲突,这可防止转换生成重复的类和接口。可以使用验证特性来检测这些问题。要避免这些替换问题,重命名元素或使用映射特性来指定不修改源模型的备选名称。
属性和参数的 Java 类型
UML 多重性 | 生成的 Java 类型 |
0..1 | 属性、指针或引用(例如 String) |
1 | 属性(例如 String) |
N(N > 1) | 数组(例如 String[]) |
1..*、* 或 x..y | 集合,请参阅下表 |
1..*、* 或 x..y 多重性的 Java 集合
isOrdered 属性 | isUnique 属性 | 生成的 Java 类型 |
True | True | java.util.SortedSet |
True | False | java.util.List |
False | True | java.util.Set |
False | False | java.util.Collection |
当单击创建映射模型时,Java 转换创建映射模型,该模型是每个可转换元素都有工件的单独模型。工件参考并具有与原始可转换元素相同的名称。要指定原始元素的备选名称,在该工件的文件名属性中输入新名称。如果不更改工件的文件名属性,转换会生成具有该工件的缺省名称的元素。
如果指定包的备选名称,则该备选名称影响包中的所有分类器(除非分类器指定了标准名称)。下表列出备选名称的示例。
UML 源 | 映射工件文件名 | 生成的 Java |
“Package1” | "" | “Package1” |
“Package2” | “com.ibm.test” | “com.ibm.test” |
Package1 中的“Class1” | "" | Package1.Class1 |
Package2 中的“Interface1” | “ITestable” | com.ibm.test.ITestable |
Package2 中的“Class2” | “com.ibm.test.Testable” | com.ibm.test.Testable |
要使用映射模型,请完成以下步骤:
1. 切换到“建模”透视图。
2. 在“模型资源管理器”视图中,单击 UML 模型。
3. 在菜单栏上,单击建模 > 转换 > 配置转换。
4. 对 Java 转换创建新的 UML2(例如,命名转换“使用”映射。)
5. 在“映射”页面上,单击使用映射模型。
6. 单击早前创建的映射模型并单击运行。
当转换运行时,它使用在映射模型中指定的任何备选名称。