UML:对 Java 应用程序执行逆向工程
注意:当前的发行版为 NetBeans IDE 6.5。如果您使用的是 NetBeans IDE 6.0 或 6.1,请参见 UML:逆向工程。
在本教程中,您将了解如何对现有 Java 应用程序的源代码执行逆向工程,使其转换为 UML 项目。在 UML 项目中,所有的类和其他应用程序元素都表示在“项目”窗口中的 UML 项目节点下,而原始 Java 代码保留为其原始状态。本文档将按照“目录”中列出的主题链接内容,指导您逐步完成一些基本的任务。
预计时间:25 分钟
目录
前提条件
要使用本教程,您必须在系统中安装 IDE,并且应该熟悉 IDE 的基本组成部分。此外,还应该对 Java 编程语言和 UML 有基本的了解。有关 IDE 的基础知识,请参见联机帮助中的“IDE 基础知识”主题。http://www.uml.org/ 是 UML 资源的官方网站,其中提供了很好的 UML 建模技术及理论资源。
系统要求
本教程假设您的系统符合 NetBeans 6.1 发行说明的“系统要求”部分中指定的要求。
本教程所需要的软件
要学习本教程,您需要具备下表中列出的软件和资源。
| NetBeans IDE |
版本 6.5 |
| Java Development Kit (JDK) |
版本 6 或
版本 5 |
创建样例 Java 和 UML 项目
在本部分中,您将使用“新建项目”向导创建 IDE 提供的样例 Java 项目和 UML 项目。
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。此时将打开“新建项目”向导。
- 在“选择项目”页中,展开“类别”窗格中的“样例”节点,然后选择 "UML" 节点。“项目”面板更新为可用的 UML 样例项目。
- 在“项目”面板中,选择“UML 银行应用程序样例”并单击“下一步”。
- 在“名称和位置”页中,保留 Java 项目名称的缺省值 UMLBankAppSample。
- 对于“项目位置”字段,请单击“浏览”导航到要用于保存样例项目文件的文件夹。请注意,当您更改“项目位置”字段中的值时,IDE 会自动更新“Java 项目文件夹”和“UML 项目文件夹”字段中的值。
- 保留 UML 项目名称的缺省值 UMLBankAppSample-Model。
- 单击“完成”。此时将出现“正在打开项目”进度对话框。UMLBankAppSample 和 UMLBankAppSample-Model 项目将出现在“项目”窗口中。
查看演示
返回页首
在“项目”窗口中浏览 UML 项目
本部分将指导您在“项目”窗口中浏览表示 UMLBankAppSample 应用程序元素的各个功能,以了解该应用程序的各个部分。
- 从主菜单中,选择“窗口”>“属性”以打开“属性”窗口。
- 在“项目”窗口中,展开 "UMLBankAppSample-Model">“模型”> "bankpack" 节点。
- 展开 "BankAccount" 节点及其“属性”节点。
BankAccount 类的所有属性都包含在此文件夹中。如果少于三个属性,则这些属性将出现在类节点(不包含“属性”文件夹)下。
- 选择标有 "private double balance" 的“属性”节点
。
“属性”窗口显示该属性及其属性的名称。
- 在“项目”窗口的 BankAccount 类的节点下,展开“操作”节点
。
BankAccount 类的所有操作都会出现在此节点下。
- 在 BankAccount 类下,展开“关系”节点
。
此时将显示三种类型的关系的节点:“特化”、“聚合”和“实现”。
- 展开“特化”节点
,然后展开三个“泛化”节点。
“泛化”链接显示 BankAccount 类与其他元素(Checking、Platinum 和 Saving 类)之间的关系。
- (可选)继续学习下一部分之前,请关闭 BankAccount 类下展开的节点。
查看演示
返回页首
通过逆向工程创建另一个 UML 项目
在本教程的第一部分中,您已装入了 UMLBankAppSample Java 项目,以及使用逆向工程功能生成的 UML 项目 UMLBankAppSample-Model。在本部分中,您将通过对在前一部分中使用的同一个 UMLBankAppSample Java 项目执行逆向工程来逐步创建另一个 UML 项目。
- 在“项目”窗口中,右键单击 "UMLBankAppSample" 节点并选择“逆向工程”。
此时将出现“逆向工程”对话框。
请注意,“选定的节点”字段包含的 UMLBankAppSample 值不可编辑。
- 保持“逆向工程”列中的复选框处于选中状态。
- 选择“创建新的 UML 项目”按钮。
- 在“项目名称”字段中,接受缺省值 UMLBankAppSample-Model1。
- 对于“项目位置”字段,保留缺省值,即保存 UML 样例项目的目录。
如果要使用其他文件夹,请单击“浏览”导航至该文件夹,然后单击“打开”。
- 单击“确定”。
此时将出现“正在打开项目”进度对话框。
UMLBankAppSample-Model1 项目将出现在“项目”窗口中。
查看演示
返回页首
生成类图
在本部分中,您将为已在前一部分中导入的 UMLBankAppSample 应用程序生成类图。
- 在“项目”窗口中的 "UMLBankAppSample-Model" 节点下,展开“模型”节点,然后展开该节点下方的 "bankpack" 节点。
- 通过在选择时按住 Shift 键或 Ctrl 键,选择 "bankpack" 文件夹及 "bankpack" 文件夹下的所有元素。
- 右键单击选定元素,然后从下拉式菜单中选择“通过选定的元素创建图”。
此时将出现“创建新图”向导。
- 在“图类型”列表中,选择“类图”。
- 在“图名称”字段中键入 BankClassDiagram,在“名称空间”字段中保留 UMLBankAppSample-Model,然后单击“完成”。
IDE 将执行以下操作:
- 在“模型”节点下创建 "BankClassDiagram" 节点。
- 在图编辑器中显示新图
- 打开建模组件面板
注意:新的 BankClassDiagram 图包含您在步骤 2 中选择的所有元素。
查看演示
返回页首
浏览图编辑器
在本部分,您将使用图编辑器的图工具栏按钮查看不同 UML 布局下的应用程序。
- 双击图编辑器顶部的 "BankClassDiagram" 标签。
此操作将伸展类图编辑器来充满整个 IDE 窗口空间。
注意:这是一个切换操作:要撤销此操作,请再次双击 "BankClassDiagram" 标签。
- 在展开的图编辑器中,单击图工具栏中的“适当地调整图大小”
,以便在展开的编辑器中完整地显示该图。
注意:请注意图工具栏中的缩放级别百分比字段。通过在此字段中键入不同的数字,您可以调整图的大小。
- 选择图工具栏中的“分层结构布局”
按钮,然后在“布局”警告对话框中单击“是”。
IDE 会将 BankClassDiagram 图重新排列到分层结构布局样式中,将所有的元素放在 bankpack 包下。
返回页首
使用“导航”窗口
在这里,请使用“导航”窗口的功能来获取图编辑器中图的可缩放视图。
- 双击展开的图编辑器顶部的 "BankClassDiagram" 标签。
IDE 将返回到多窗口视图。
- 从缩放下拉列表中选择 50%,然后单击图工具栏上的“适当地调整图大小”按钮
。
使用“适当地调整图大小”按钮,图可以从 75% 大小的版本进行缩放,以便您可以更好地读取标签。
- 单击“导航”窗口中的相应栏,以显示图的导航窗口视图。
此时将出现一个小的可缩放窗口,其中显示整个图。该窗口中的蓝色框指示图编辑器中出现的内容。
注意:您可能需要放大“概览”窗口或在缩放下拉式列表中选择一个较高的比例,才能看到蓝色框。
- 将蓝色框拖至 BankAccount 元素上。
此操作会在图编辑器的中心位置显示 BankAccount 元素。
- 要放大元素,请单击位于蓝色方框任意边角的控柄并缩小方框。调整该框的位置,以放大图的某个特定部分。
- 要缩小图,请单击蓝色框的一个手柄,并增大该框的大小。
请注意,IDE 此时会缩小图的比例。
- 单击位于右上角的 X 可关闭“图”窗口。
- 在图工具栏中再次单击“适应窗口大小”按钮
。
返回页首
为类生成依赖关系图
现在,应为 BankApp 应用程序中的某个类生成依赖关系图。
- 双击 "BankClassDiagram" 标签,以切换到图的完整视图。
- 右键单击图编辑器中的 BankAccount 类,然后从弹出式菜单中选择“生成依赖关系图”。
IDE 将创建一个依赖关系图,并打开图编辑器中的 "BankAccountDependencies" 标签以显示新图。现在,请将注意力集中在图编辑器中显示 BankAccount 依赖关系图的标签上。BankAccount 依赖关系图显示以下依赖关系链接:
- 与 Account 接口的实现关系
- 指向 History 类的可导航聚合链接
注意:通过使用此选项,可以创建一个图,该图中显示任何给定对象的所有依赖关系。
- 再次双击 "BankClassDiagram" 标签,以切换到 IDE 的多窗口视图。
- 在“项目”窗口中,展开 "UMLProject" >“模型”> "bankpack" 文件夹下的 BankAccount 类节点。
您将看到已添加了“BankAccount依赖关系”节点
,该节点表示您刚刚创建的依赖关系图。
返回页首
为操作生成序列图
现在应为应用程序的 withdraw 操作生成一个序列图。并查看它是如何作为图显示以及作为“项目”窗口中 UML 项目的元素显示的
- 单击图编辑器中的“BankAccount依赖关系”标签.
- 选择 BankAccount 元素并调整缩放,以便您可以方便地读取操作标签。
- 在图编辑器中,右键单击 withdraw 操作,然后从弹出式菜单中选择“逆行工程操作”。
此时将出现“创建新图”对话框。
- 在“图类型”列表中,选择“序列图”。
- 在“图名称”字段中,键入 withdrawSD。
- 接受“名称空间”字段中的缺省值并单击“完成”。
序列图将出现在图编辑器中。
- 展开图编辑器并调整缩放比例,使您可以方便地检查新的序列图。
序列图显示控制流、行为序列,以及并发处理和激活。
- 在“项目”窗口中的 "BankAccount" 类节点下,展开“操作”节点,然后展开 "public void withdraw " 操作节点。
您将看到新的 "withdraw" 序列图节点
。
- 展开 "withdraw" 节点以查看在“项目”窗口中表示的序列图的元素。
返回页首
合并标记上的注释
UML 使用合并标记帮助您使源与模型始终保持同步。从 UML 项目中调用“代码生成”操作时,缺省情况下 IDE 会添加合并标记。如果已通过对现有 Java 项目执行反向工程创建了 UML 项目,则没有与现有源元素对应的合并标记。
添加合并标记:
- 创建或打开 Java 项目。
- 右键单击 Java 项目节点,然后选择“逆向工程”。验证是否选中了“创建新的 UML 项目”。单击“确定”。
- 确保逆向工程完成。输出窗口将显示“任务成功”。
- 右键单击新创建的 UML 项目节点 ->“生成代码...”
- 从“目标项目”下拉式列表中选择该 Java 项目。选择“在现有源元素中添加合并标记”。单击“确定”。
您的源和模型将立即同步,且所有的源元素都将具有合并标记。您可以在源与模型之间安全地来回切换。但是,每次切换之前,您应相应地调用“逆向工程”或“代码生成”。
返回页首
小结
返回页首
后续步骤
返回页首