FeaturesPluginsDocs & SupportCommunityPartners

UML 建模:开发应用程序

本教程适用于 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 建模模块发行说明中指定的要求。

本教程所需的软件

开始之前,您需要在计算机中安装以下软件:

目录

返回页首


为应用程序创建 Java 项目

在本部分,您需要为在教程中开发的 Java 应用程序创建一个新的 Java 项目。

  1. 从主菜单中,选择“文件”>“新建项目”,然后在“新建项目”向导中执行以下操作:
    1. 在“类别”下选择“常规”。
    2. 在“项目”下选择“Java 应用程序”。
    3. 单击“下一步”。
  2. 在“项目名称”字段中,键入 JavaPrj
  3. 对于“项目位置”字段,请单击“浏览”(您可以导航至计算机上的任意目录),并创建一个名为 MyPrj 的新文件夹。
  4. 清除“设置为主项目”和“创建主类”的复选框标记。
  5. 单击“完成”。
    将显示一个进度对话框。
    创建新的 JavaPrj 项目后,该项目即会显示在“项目”窗口中。

查看演示

返回页首


创建 UML 项目和类图

在本部分,您将为应用程序创建 UML 建模项目(或 UML 项目)和类图。UML 项目是一种机制,通过这种机制您可以存储和管理 UML 模型的文件集合。UML 模型包含模型的所有图、关联的图元素以及与 UML 模型相关的元数据。

  1. 要创建 UML 项目,请选择“文件”>“新建项目”,然后执行以下操作:
    1. 在“类别”下选择 "UML"。
    2. 在“项目”下选择“Java 平台模型”。
    3. 单击“下一步”。
    将打开“新建 Java 平台模型”页。
  2. 在“项目名称”字段中,键入 UMLPrj
    请注意,在键入项目名称后,IDE 会自动建议将此名称用作项目文件夹的名称。
  3. 确认项目位置为 MyPrj
  4. 单击“完成”。
    IDE 会创建一个 UML 项目,并且将显示“创建新图”对话框。
  5. 在“图类型”列表中选择“类图”。
  6. 在“图名称”字段中,键入 BankClassDiagram
  7. 保留“名称空间”字段中的 UMLPrj,然后单击“完成”。
    IDE 将执行以下操作:
    • 在“项目”窗口中添加 UMLPrj 项目节点
    • 在“模型”节点下创建 BankClassDiagram 节点
    • 在图编辑器中显示新图(此时该图为空图)
    • 打开建模组件面板

查看演示

返回页首


添加并定义类元素

现在,将添加并定义组成 Java 应用程序的类元素。您将使用建模组件面板中的 "Class" 图标来创建类元素。

  1. 从建模组件面板的“基本”类别中,选择 "Class" 图标 显示 "Class" 图标的图像。,然后在图编辑器中单击鼠标左键。
    此操作会在图编辑器中放置一个类元素。
  2. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Class" 图标。
  3. 选择新添加的类元素,键入 BankAccount,然后按 Enter 键。
    IDE 将执行以下操作:
    • 将元素标记为 BankAccount
    • 创建公共操作 BankAccount()
    • 在属性窗口中显示 BankAccount 类的属性
  4. 在图编辑器中的 BankAccount 类元素处于选定状态下,右键单击“属性”一词,然后从弹出式菜单中选择“插入属性”。
    将打开一个单行编辑器,并显示以下信息:
    可视性 类型 名称[范围]=initialValue {名称=值}
  5. 键入 balance,然后按 Enter 键。
    BankAccount 类中将显示一个名为 balance 且类型为 int 的私有属性,并且还会在该类中创建以下操作:
    • public int getBalance()
    • public void setBalance(int val)
  6. 在图编辑器中的 BankAccount 类元素仍处于选定状态下,右键单击“操作”一词,然后从弹出式菜单中选择“插入操作”。
    将打开一个单行编辑器,并显示以下信息:
    可视性 returnType 名称(参数) {属性, ...}
  7. 键入 withdraw,将光标(使用键盘上的向右方向键)移至圆括号内,键入 int amount,然后按 Enter 键。
    IDE 将在类元素中添加新的操作,如下所示:
    public void withdraw(int amount)

查看演示

返回页首


向图中添加更多的元素

在本部分,您将使用建模组件面板中的更多 UML 图标来向应用程序添加接口、包、属性和操作。

  1. 从建模组件面板的“基本”类别中,选择 "Package" 图标 "Package" 图标的图像

    注意:如果需要,请向下滚动鼠标以查看其他的建模图标。或者,也可以关闭文档窗口以获取更多的空间来放大建模组件面板。这样就可以在建模组件面板中查看更多的可用类元素图标。
  2. 在图编辑器中单击鼠标左键,向类图添加一个包元素。
  3. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Package" 图标。

    注意:向图中添加建模元素后,您可以选择这些元素并将其拖至图编辑器中的新位置,以改进图的外观。在执行右键单击操作时要格外小心,因为如果单击的位置不正确,则可能会打开图编辑器的弹出式菜单。在这种情况下,您只需再次单击图编辑器的空白区域即可。
  4. 在包元素处于选定状态下,键入 bankpack,然后按 Enter 键。
  5. 从建模组件面板的“基本”类别中,选择 "Interface" 图标 "Interface" 图标的图像,然后在图编辑器中单击鼠标左键。
  6. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Interface" 图标。
  7. 在接口元素处于选定状态下,键入 Bank,然后按 Enter 键。
  8. Bank 接口中添加 deposit 操作。
    向接口添加操作的方法与向类添加操作的方法相同(请参见上一部分中的步骤 6)。请按如下所示定义操作:
    public void deposit(int amount)
  9. 从建模组件面板中,选择 "Class" 图标 "Class" 图标的图像,然后在图编辑器中双击。
  10. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Class" 图标。

    注意:如果绘制了过多的类元素,请取消选择 "Class" 图标,方法是:右键单击要删除的类元素,然后选择“编辑”>“删除”。
  11. 将类元素命名为 CheckingAccountTest,然后根据需要调整元素的大小。

查看演示

返回页首


标识元素之间的关联

在本部分,您将使用建模组件面板中的 UML 图标来标识类元素之间的关联。

  1. 从建模组件面板的“基本”类别中,选择 "Implementation" 图标 "Implementation" 图标的图像,然后在 BankAccount 类元素内单击鼠标左键。
  2. Bank 接口元素内单击鼠标左键,然后在图编辑器中的任意位置单击鼠标右键以取消选择 "Implementation" 图标。
    类与接口元素之间将显示一个实现链接。实现链接指示了类与接口之间的关系。
  3. 从建模组件面板的“基本”类别中,选择 "Generalization" 图标 "Generalization" 图标的图像
  4. 在 Checking 类元素(子类)内单击鼠标左键,然后在 BankAccount 类元素(超类)内单击鼠标左键。
    将显示“选择要重定义的方法”对话框。
  5. 选择 withdraw 方法,然后单击“确定”。
    IDE 将执行以下操作:
    • 关闭对话框
    • withdraw 方法添加到 Checking 类中
    • 在两个相关的类元素之间添加泛化链接
    泛化链接显示子类与其超类之间的关系。子类是超类的细化,表明它们可以继承超类的特性(属性和操作)。
  6. 在图编辑器中的任意空白区域单击鼠标右键以取消选择 "Generalization" 图标。
  7. 从建模组件面板的“基本”类别中,选择 "Nested Link" 图标 "Nested Link" 图标的图像,在 BankAccount 元素内单击鼠标左键,然后在 bankpack 包元素内再次单击鼠标左键。
  8. 按照上一步骤所述,使用 "Nested Link" 图标在 Checking、AccountTest 以及 Bank 元素与 bankpack 包之间建立连接。
  9. 取消选择 "Nested Link" 图标。
    嵌套链接表示元素是如何按组进行划分的。在本例中,我们将所有的类元素全部划分到 bankpack 包的一个组中。
  10. 在图编辑器中的任意位置按 Ctrl-S 组合键以保存对模型所做的更改。

查看演示

返回页首


生成 Java 源代码

在本部分,您将使用 UML 建模的生成代码功能为前面部分所创建的 UML 模型生成 Java 源代码。

  1. 在“项目”窗口中,右键单击 "UMLPrj" 节点,然后从弹出式菜单中选择“生成代码”。
    将显示“生成代码”对话框。
  2. 在“生成代码”对话框中,单击“浏览”。
  3. 在“选择目标源文件夹”对话框中,找到教程前面部分所创建的 JavaPrj 项目的源文件夹。
    例如:C:\Temp\MyPrj\JavPrj\src
  4. 单击“选择”。
  5. 返回至“生成代码”对话框后,取消选中“备份现有的源文件”复选框。
  6. 单击“确定”。
    将显示“授权保存 UML 项目”对话框。
  7. 单击“确定”。
    IDE 将生成代码,并在“输出”窗口显示代码生成的进度。

查看演示

返回页首


使用逆向工程继续开发

在本部分,您将通过执行以下操作来继续开发应用程序:在源代码编辑器中修改生成的源代码,然后使用逆向工程功能更新应用程序的 UML 模型。

  1. 在“项目”窗口中,展开 "UMLPrj" >“模型”> "bankpack" 节点。
  2. 右键单击 "BankAccount" 节点,然后从弹出式菜单中选择“导航至源”。
  3. 在源代码编辑器中,将以下代码添加到 deposit 方法中:
    setBalance(getBalance() + amount);
  4. 在“项目”窗口的 "UMLPrj" >“模型”> "bankpack" 节点下,右键单击 "AccountTest" 节点,然后从弹出式菜单中选择“导航至源”。
  5. 在源代码编辑器中键入(或复制并粘贴)以下代码:
    public static void main(String[] args) {
    Checking myChecking = new Checking();
    myChecking.deposit(100);
    System.out.println("Checking Balance is: " +
    myChecking.getBalance() );
    }
    此代码会创建一个新的 Checking 对象,并指定一项 100 美元的存款,然后输出结果。
  6. 在源代码编辑器中单击鼠标右键,然后选择“重新设置代码格式”。
  7. 在源代码编辑器中的任意位置按 Ctrl-S 组合键以保存对 AccountTest.java 源文件所做的更改。
  8. 再次在源代码编辑器中单击鼠标右键,然后从弹出式菜单中选择“逆向工程”。
    将显示“逆向工程”对话框。
  9. 在“逆向工程”对话框中选择“使用现有的 UML 项目”,然后选择 UMLPrj 作为目标项目。
  10. 单击“确定”以启动逆向工程过程。
  11. 在“模型元素覆盖授权”对话框中,单击“是”以覆盖 AccountTest 类的现有模型。
  12. 单击 "BankClassDiagram" 标签。
    请注意,在类图的 AccountTest 类元素中现在出现了新输入的 main 方法。
    通过使用逆向工程功能,对 Java 源项目所做的更改会反映在相应的 UML 模型项目中。

查看演示

返回页首


对所做的工作进行测试

现在,将生成并运行项目。

  1. 在“项目”窗口中,右键单击 "JavaPrj" 节点,然后从弹出式菜单中选择“生成项目”。
  2. 在“项目”窗口中,右键单击 "JavaPrj" 节点,然后从弹出式菜单中选择“运行项目”。
    将显示“运行项目”对话框。
  3. 在“运行项目”对话框中,选择 bankpack.AccountTest 作为主类,然后单击“确定”。
    IDE 将执行应用程序,并在“输出”窗口中显示以下输出结果:
    Checking Balance is: 100

查看演示

现在,您已完成了应用程序的开发。

返回页首


小结

在本教程中,您为一个简单的银行应用程序设计了类图。具体执行的任务如下所示:

  • 创建 UML 项目
  • 使用建模组件面板中的 UML 图标来创建类、接口、包、属性和操作
  • 使用 UML 关联将类链接在一起
  • 在“项目”窗口显示的 UML 项目中查看在图编辑器中创建的元素
  • 在 UML 项目中,为在图编辑器中创建的元素生成源代码,并在源代码编辑器中查看这些代码
  • 使用代码生成和逆向工程功能,保持建模与在源代码编辑器中开发代码之间的同步
  • 通过源代码编辑器编译并执行类


返回页首

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by