UML 2.0 到 Java 转换


UML 到 Java 的转换将 UML 2.0 规范转换成 Java 类。可以使用转换从 UML 2.0 规范生成 Java 项目。也可以在初始生成后应用转换,合并更新的 UML 模型和现有 Java 代码。
 

1. 入门

在使用 UML 2.0 到 Java 的转换之前,应该熟悉创建和编辑 UML 2.0 模型和 Java 项目。

以下过程显示了 Java 转换的最简单的用法。

要将 UML 模型转换成 Java:
1. 切换到“建模”透视图。
2. 在“模型资源管理器”视图中,右键单击 UML 类(如 Class1)。
3. 单击转换 > 执行转换 > UML2 到 Java
4. 运行转换对话打开。单击创建目标容器按钮。
5. 新建 Java 项目对话打开。在项目名称字段中输入“简单”并单击完成
6. 在运行转换对话中,单击完成

新的 Java 项目包含缺省包,该包包含新的 Java 类:Class1。

转换也可执行几个其它的更复杂的功能,如覆盖名称而不修改源模型,将 UML 对象替换为可视化对象,合并 UML 模型中的变更和 Java 源以及验证 UML 模型以查找潜在的转换问题。
 

2. 转换详细信息

2.1 转换源

可以选择 UML 2.0 模型、包、非嵌套类和非嵌套接口,作为转换源。如果选择其它项作为源,转换仍会继续,但不会转换那些项。当转换转换模型、包、类或接口时,也同时转换那些对象包含的所有项。例如,当转换转换类时,它也转换该类的所有操作和属性。
 

2.2 转换目标

可以选择至少有一个源文件夹的任何 Java 项目作为转换目标。
 

2.3 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

3. 支持通用转换技术

3.1 集成团队支持

Java 转换提供集成团队支持,允许自动检出并向源控制系统添加新文件。
 

3.2 转换映射

如果不想修改转换的源模型,可以指定转换目标元素的备选名称。如果想在独立于平台的模型中包含特定于 Java 的详细信息(如命名限制),或者如果源模型的逻辑组织不适合于目标包,那么您可能想指定备选名称。要支持备选目标名称而不修改源模型,请使用转换映射特性。
要使用转换映射特性:
1. 切换到“建模”透视图。
2. 在“模型资源管理器”视图中,单击 UML 模型。
3. 在菜单栏上,单击建模 > 转换 > 配置转换
4. 对 Java 转换创建新的 UML2(例如,命名转换“创建”映射。)
5. 在“映射”页面上,单击只创建映射模型(无转换)
6. 指定文件名并单击运行

当单击创建映射模型时,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. 单击早前创建的映射模型并单击运行
当转换运行时,它使用在映射模型中指定的任何备选名称。
 

3.3 适当的可视化支持

如果不想保留原始 UML 模型,可以使用转换的可视化特性来删除 UML 元素并将它们替换为生成的 Java 元素的快捷方式。要配置转换来删除 UML 模型元素,在“配置转换”窗口的“通用”页面上,单击“替换 UML 元素”。如果替换引起数据丢失,转换不会替换元素。例如,如果 UML 元素包含图,则转换删除图,因此它不替换那些元素。
 

3.4 重新应用

Java 转换通过在生成的 Java 文档中使用“@generated”标记,合并源模型的变更和修改后的源代码。转换拥有标记为“@generated”的 Java 元素并在重新转换期间覆盖这些元素或在要从源模型除去元素的情况下删除它们。可以通过除去“@generated”标记,重新声明元素的“所有权”,这可防止转换覆盖或删除元素。
 

3.5 验证

Java 转换插件提供 UML 概要文件,可以用来验证模型以查找潜在的转换问题。例如,在生成的 Java 代码中,多重继承、循环泛化关系和命名冲突会引起编译错误。要查看可出现在生成的代码中的一列潜在问题,请将概要文件应用于源模型并运行验证特性。
 

3.6 可跟踪性

Java 转换可以创建从生成的 Java 元素到它们的 UML 源的派生关系。要创建派生关系,在“配置转换”窗口的“通用”页面上,单击“创建源到目标的关系”。当系统使生成的 Java 元素可见时,元素具有到源元素的派生关系。
 
使用条款 | 反馈
(C) Copyright IBM Corporation 2004. All Rights Reserved.