UML 建模:开发应用程序
最新更新日期:2007 年 3 月 29 日
本教程适用于 NetBeans™ 5.5 集成开发环境 (Integrated Development Environment, IDE) 以及 NetBeans 5.5 UML 建模模块。
在本教程中,您将了解如何使用 IDE 的 UML 建模功能来创建简单的 UML 类图。然后,使用代码生成和逆向工程功能来开发一个简单的银行应用程序,并通过执行测试类对该应用程序进行测试。此银行应用程序是一个非常简单的应用程序;实际的应用程序模型要复杂得多,需要更多的细节设计。本教程旨在介绍 IDE 的一些 UML 建模功能,而不是向您传授 UML 概念或 Java 编程语言。
有关使用 NetBeans IDE 的更多信息,请参见 NetBeans Web 站点中的文档和支持页。
注意:无论您在何处看到
图标,都可以单击此图标以查看教程中所描述步骤的详细交互式演示。
先决条件
要使用本教程,您必须先在系统中安装 IDE,并且应该熟悉 IDE 的基本组成部分。同时,还应该对 Java 编程语言和 UML 建模有基本的了解。要了解 IDE 的基础知识,请参见联机帮助中的“IDE 基础知识”主题。http://www.uml.org/ 是 UML 资源的官方网站,为您了解 UML 建模技术和理论提供了很好的资源。
系统要求
本教程假定您的系统满足 NetBeans 5.5 UML 建模模块发行说明中指定的要求。
本教程所需的软件
开始之前,您需要在计算机中安装以下软件:
- NetBeans IDE 5.5(下载)
- NetBeans 5.5 UML 建模模块(下载信息)
目录
返回页首
为应用程序创建 Java 项目
在本部分,您需要为在教程中开发的 Java 应用程序创建一个新的 Java 项目。
- 从主菜单中,选择“文件”>“新建项目”,然后在“新建项目”向导中执行以下操作:
- 在“类别”下选择“常规”。
- 在“项目”下选择“Java 应用程序”。
- 单击“下一步”。
- 在“项目名称”字段中,键入 JavaPrj。
- 对于“项目位置”字段,请单击“浏览”(您可以导航至计算机上的任意目录),并创建一个名为 MyPrj 的新文件夹。
- 清除“设置为主项目”和“创建主类”的复选框标记。
- 单击“完成”。
将显示一个进度对话框。
创建新的 JavaPrj 项目后,该项目即会显示在“项目”窗口中。
查看演示
返回页首
创建 UML 项目和类图
在本部分,您将为应用程序创建 UML 建模项目(或 UML 项目)和类图。UML 项目是一种机制,通过这种机制您可以存储和管理 UML 模型的文件集合。UML 模型包含模型的所有图、关联的图元素以及与 UML 模型相关的元数据。
- 要创建 UML 项目,请选择“文件”>“新建项目”,然后执行以下操作:
- 在“类别”下选择 "UML"。
- 在“项目”下选择“Java 平台模型”。
- 单击“下一步”。
将打开“新建 Java 平台模型”页。
- 在“项目名称”字段中,键入 UMLPrj。
请注意,在键入项目名称后,IDE 会自动建议将此名称用作项目文件夹的名称。
- 确认项目位置为 MyPrj。
- 单击“完成”。
IDE 会创建一个 UML 项目,并且将显示“创建新图”对话框。
- 在“图类型”列表中选择“类图”。
- 在“图名称”字段中,键入 BankClassDiagram。
- 保留“名称空间”字段中的 UMLPrj,然后单击“完成”。
IDE 将执行以下操作:
- 在“项目”窗口中添加 UMLPrj 项目节点
- 在“模型”节点下创建 BankClassDiagram 节点
- 在图编辑器中显示新图(此时该图为空图)
- 打开建模组件面板
查看演示
返回页首
添加并定义类元素
现在,将添加并定义组成 Java 应用程序的类元素。您将使用建模组件面板中的 "Class" 图标来创建类元素。
- 从建模组件面板的“基本”类别中,选择 "Class" 图标
,然后在图编辑器中单击鼠标左键。
此操作会在图编辑器中放置一个类元素。
- 在图编辑器中的任意位置单击鼠标右键以取消选择 "Class" 图标。
- 选择新添加的类元素,键入 BankAccount,然后按 Enter 键。
IDE 将执行以下操作:
- 将元素标记为 BankAccount
- 创建公共操作 BankAccount()
- 在属性窗口中显示 BankAccount 类的属性
- 在图编辑器中的 BankAccount 类元素处于选定状态下,右键单击“属性”一词,然后从弹出式菜单中选择“插入属性”。
将打开一个单行编辑器,并显示以下信息:
可视性 类型 名称[范围]=initialValue {名称=值}
- 键入 balance,然后按 Enter 键。
BankAccount 类中将显示一个名为 balance 且类型为 int 的私有属性,并且还会在该类中创建以下操作:
- public int getBalance()
- public void setBalance(int val)
- 在图编辑器中的 BankAccount 类元素仍处于选定状态下,右键单击“操作”一词,然后从弹出式菜单中选择“插入操作”。
将打开一个单行编辑器,并显示以下信息:
可视性 returnType 名称(参数) {属性, ...}
- 键入 withdraw,将光标(使用键盘上的向右方向键)移至圆括号内,键入 int amount,然后按 Enter 键。
IDE 将在类元素中添加新的操作,如下所示:
public void withdraw(int amount)
查看演示
返回页首
向图中添加更多的元素
在本部分,您将使用建模组件面板中的更多 UML 图标来向应用程序添加接口、包、属性和操作。
- 从建模组件面板的“基本”类别中,选择 "Package" 图标
。
注意:如果需要,请向下滚动鼠标以查看其他的建模图标。或者,也可以关闭文档窗口以获取更多的空间来放大建模组件面板。这样就可以在建模组件面板中查看更多的可用类元素图标。
- 在图编辑器中单击鼠标左键,向类图添加一个包元素。
- 在图编辑器中的任意位置单击鼠标右键以取消选择 "Package" 图标。
注意:向图中添加建模元素后,您可以选择这些元素并将其拖至图编辑器中的新位置,以改进图的外观。在执行右键单击操作时要格外小心,因为如果单击的位置不正确,则可能会打开图编辑器的弹出式菜单。在这种情况下,您只需再次单击图编辑器的空白区域即可。
- 在包元素处于选定状态下,键入 bankpack,然后按 Enter 键。
- 从建模组件面板的“基本”类别中,选择 "Interface" 图标
,然后在图编辑器中单击鼠标左键。
- 在图编辑器中的任意位置单击鼠标右键以取消选择 "Interface" 图标。
- 在接口元素处于选定状态下,键入 Bank,然后按 Enter 键。
- 在 Bank 接口中添加 deposit 操作。
向接口添加操作的方法与向类添加操作的方法相同(请参见上一部分中的步骤 6)。请按如下所示定义操作:
public void deposit(int amount)
- 从建模组件面板中,选择 "Class" 图标
,然后在图编辑器中双击。
- 在图编辑器中的任意位置单击鼠标右键以取消选择 "Class" 图标。
注意:如果绘制了过多的类元素,请取消选择 "Class" 图标,方法是:右键单击要删除的类元素,然后选择“编辑”>“删除”。
- 将类元素命名为 Checking 和 AccountTest,然后根据需要调整元素的大小。
查看演示
返回页首
标识元素之间的关联
在本部分,您将使用建模组件面板中的 UML 图标来标识类元素之间的关联。
- 从建模组件面板的“基本”类别中,选择 "Implementation" 图标
,然后在 BankAccount 类元素内单击鼠标左键。
- 在 Bank 接口元素内单击鼠标左键,然后在图编辑器中的任意位置单击鼠标右键以取消选择 "Implementation" 图标。
类与接口元素之间将显示一个实现链接。实现链接指示了类与接口之间的关系。
- 从建模组件面板的“基本”类别中,选择 "Generalization" 图标
。
- 在 Checking 类元素(子类)内单击鼠标左键,然后在 BankAccount 类元素(超类)内单击鼠标左键。
将显示“选择要重定义的方法”对话框。
- 选择 withdraw 方法,然后单击“确定”。
IDE 将执行以下操作:
- 关闭对话框
- 将 withdraw 方法添加到 Checking 类中
- 在两个相关的类元素之间添加泛化链接
泛化链接显示子类与其超类之间的关系。子类是超类的细化,表明它们可以继承超类的特性(属性和操作)。
- 在图编辑器中的任意空白区域单击鼠标右键以取消选择 "Generalization" 图标。
- 从建模组件面板的“基本”类别中,选择 "Nested Link" 图标
,在 BankAccount 元素内单击鼠标左键,然后在 bankpack 包元素内再次单击鼠标左键。
- 按照上一步骤所述,使用 "Nested Link" 图标在 Checking、AccountTest 以及 Bank 元素与 bankpack 包之间建立连接。
- 取消选择 "Nested Link" 图标。
嵌套链接表示元素是如何按组进行划分的。在本例中,我们将所有的类元素全部划分到 bankpack 包的一个组中。
- 在图编辑器中的任意位置按 Ctrl-S 组合键以保存对模型所做的更改。
查看演示
返回页首
生成 Java 源代码
在本部分,您将使用 UML 建模的生成代码功能为前面部分所创建的 UML 模型生成 Java 源代码。
- 在“项目”窗口中,右键单击 "UMLPrj" 节点,然后从弹出式菜单中选择“生成代码”。
将显示“生成代码”对话框。
- 在“生成代码”对话框中,单击“浏览”。
- 在“选择目标源文件夹”对话框中,找到教程前面部分所创建的 JavaPrj 项目的源文件夹。
例如:C:\Temp\MyPrj\JavPrj\src
- 单击“选择”。
- 返回至“生成代码”对话框后,取消选中“备份现有的源文件”复选框。
- 单击“确定”。
将显示“授权保存 UML 项目”对话框。
- 单击“确定”。
IDE 将生成代码,并在“输出”窗口显示代码生成的进度。
查看演示
返回页首
使用逆向工程继续开发
在本部分,您将通过执行以下操作来继续开发应用程序:在源代码编辑器中修改生成的源代码,然后使用逆向工程功能更新应用程序的 UML 模型。
- 在“项目”窗口中,展开 "UMLPrj" >“模型”> "bankpack" 节点。
- 右键单击 "BankAccount" 节点,然后从弹出式菜单中选择“导航至源”。
- 在源代码编辑器中,将以下代码添加到 deposit 方法中:
setBalance(getBalance() + amount);
- 在“项目”窗口的 "UMLPrj" >“模型”> "bankpack" 节点下,右键单击 "AccountTest" 节点,然后从弹出式菜单中选择“导航至源”。
- 在源代码编辑器中键入(或复制并粘贴)以下代码:
public static void main(String[] args) {
Checking myChecking = new Checking();
myChecking.deposit(100);
System.out.println("Checking Balance is: " +
myChecking.getBalance() );
}
此代码会创建一个新的 Checking 对象,并指定一项 100 美元的存款,然后输出结果。
- 在源代码编辑器中单击鼠标右键,然后选择“重新设置代码格式”。
- 在源代码编辑器中的任意位置按 Ctrl-S 组合键以保存对 AccountTest.java 源文件所做的更改。
- 再次在源代码编辑器中单击鼠标右键,然后从弹出式菜单中选择“逆向工程”。
将显示“逆向工程”对话框。
- 在“逆向工程”对话框中选择“使用现有的 UML 项目”,然后选择 UMLPrj 作为目标项目。
- 单击“确定”以启动逆向工程过程。
- 在“模型元素覆盖授权”对话框中,单击“是”以覆盖 AccountTest 类的现有模型。
- 单击 "BankClassDiagram" 标签。
请注意,在类图的 AccountTest 类元素中现在出现了新输入的 main 方法。
通过使用逆向工程功能,对 Java 源项目所做的更改会反映在相应的 UML 模型项目中。
查看演示
返回页首
对所做的工作进行测试
现在,将生成并运行项目。
- 在“项目”窗口中,右键单击 "JavaPrj" 节点,然后从弹出式菜单中选择“生成项目”。
- 在“项目”窗口中,右键单击 "JavaPrj" 节点,然后从弹出式菜单中选择“运行项目”。
将显示“运行项目”对话框。
- 在“运行项目”对话框中,选择
bankpack.AccountTest 作为主类,然后单击“确定”。
IDE 将执行应用程序,并在“输出”窗口中显示以下输出结果:
Checking Balance is: 100
查看演示
现在,您已完成了应用程序的开发。
返回页首
小结
在本教程中,您为一个简单的银行应用程序设计了类图。具体执行的任务如下所示:
- 创建 UML 项目
- 使用建模组件面板中的 UML 图标来创建类、接口、包、属性和操作
- 使用 UML 关联将类链接在一起
- 在“项目”窗口显示的 UML 项目中查看在图编辑器中创建的元素
- 在 UML 项目中,为在图编辑器中创建的元素生成源代码,并在源代码编辑器中查看这些代码
- 使用代码生成和逆向工程功能,保持建模与在源代码编辑器中开发代码之间的同步
- 通过源代码编辑器编译并执行类
返回页首