FeaturesDocs & SupportCommunityBlogsPartners

UML:创建类图

在本教程中,您将了解如何使用 IDE 的 UML 功能来创建类图。本教程将向您介绍各种创建类图元素的技术,并说明如何生成图的 Java 源代码。教程的目的在于介绍 IDE 的一些 UML 建模类图功能并显示各种创建类图元素的技术。

类图是对应用程序的一种可视表示,用于显示应用程序的类以及类之间的关系。当您打开类图时,IDE 会在建模组件面板中显示一组特定的 UML 元素图标。通过使用类图模型,可以描述应用程序中元素的静态结构。IDE 允许您以图形方式创建含有类的图。类是按照其所具有的通用结构及行为在分层结构中进行排列的,并且这些类与其他类相关联。

预计时间:30 分钟

教程需求

在开始之前,确保对本节的系统要求有所了解。

前提条件

要使用本教程,您必须在系统上安装 IDE,并且应该对 IDE 的基本部分比较熟悉。此外,您还应具备 Java 编程语言和 UML 方面的基本知识。有关 IDE 的基础知识,请参阅在线帮助中的 IDE Basics 主题。官方 UML 资源页面提供了许多有用的 UML 技巧和理论,地址为 http://www.uml.org/

系统要求

本教程假定您的系统满足 NetBeans 6.0 发行说明 的“系统要求”部分所指定的要求。

本教程所需要的软件

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

回到顶部

使用类图

类可以定义每个元素实例所具有的属性以及每个元素执行或经历的操作。通过执行以下任务,您可以在 UML 模型中呈现一个类:

  • 创建表示类的元素
  • 命名类
  • 定义类属性
  • 定义类操作
  • 描绘链接和关联
  • 添加文档

以下部分介绍了如何为一个虚构的银行应用程序创建简单的类图。当您完成教程中介绍的详细步骤后,创建的类图应该与图 1 类似(该图仅供参考)。请根据下一部分开始处的说明绘制类图。

如果步骤标记为“可选”,则表明该步骤为附加任务或者是执行某项任务的替代方法。不执行这些可选步骤也能成功完成本教程。

屏幕截图:完成的类图示例

图 1:类图示例

回到顶部

 

创建类图并添加元素

本教程将使用 UML:创建用例图 教程中的 UML 项目。如果您未完成用例教程,则可以在本地系统中创建一个名为 UMLTutorial 的目录,然后在该目录下创建一个 Java 平台模型型的 UML 项目,将其命名为 UMLTutorialProject,以便继续执行本教程中的步骤。

本部分说明了 UML 提供的一些基本 UML 任务,通过这些任务,您可以建立一个使用类图的简单应用程序。本节包含以下主题:

回到顶部

 

创建类图

  1. 启动 IDE 并打开以前创建的 UMLTutorialProject 项目(如果需要)。
  2. 在“项目”窗口中,展开 UMLTutorialProject 节点,然后右键单击 Model 节点。
  3. 从弹出菜单中选择“添加”>“图”。

    将打开新建向导,并显示“创建新图”页。
  4. 在“图类型”列表中选择“类图”。
  5. 在“图名称”字段中,键入 ClassDiagram
  6. 保留“名称空间”字段中的默认设置,然后单击“完成”。
    IDE 将执行以下操作:
    • Model 节点下创建 ClassDiagram 节点
    • 在 Diagram 编辑器中显示新的类图(此时的类图为空)
    • 打开 Modeling Palette

回到顶部

 

添加并标记类元素

  1. 从建模组件面板的“基本”类别中,选择“类”图标 “类”图标的图像,然后在图编辑器中单击鼠标左键。
    此操作会在图中放置一个类元素。
  2. 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。

    注意:每次选择图标后,都可以通过在图编辑器中多次单击鼠标左键来放置该元素的多个实例。
  3. 通过单击的方式来选择新添加的类元素(如果尚未选择)。
  4. 键入 EntryStation,然后按回车键。
    IDE 将执行以下操作:
    • 将类元素的名称标记为 EntryStation
    • 创建名为 EntryStation() 的公共操作
    • 在属性窗口中显示类的属性
    • 在“项目”窗口的“模型”节点下,添加名为 EntryStation 的类元素

回到顶部


使用弹出菜单添加属性

现在,您已绘制并标记了 EntryStation 元素,接下来需要描述其属性。

  1. 在图编辑器中选择 EntryStation 元素(如果尚未选择)。
  2. 右键单击“属性”一词,然后从弹出菜单中选择“插入属性”。
    此时将打开一个只有一行的编辑器,其中显示了以下信息:
    可视性 类型 名称[范围]=initialValue {名称=值}
  3. 键入 stationID,然后按回车键。
    EntryStation 类上将显示一个名为 stationID 且类型为 int 的属性,并且还将在该类上创建以下操作:
    public int getStationID()
    public void setStationID(int val)
    请注意,由于保留了默认设置,因此会创建 getset 操作。

回到顶部

添加操作

  1. 在图编辑器中,选择 EntryStation 类元素。
  2. 右键单击 Operations 一词,然后从弹出菜单中选择“插入操作”。
    此时将打开一个只有一行的编辑器,其中显示了以下信息:
    可视性 returnType 名称(参数) {属性, ...}
  3. 键入 validateEntryStation,然后按回车键。
    IDE 将创建一个新的操作。

回到顶部


(可选)编辑属性或操作

双击类中的属性或操作时,将打开一个组合框编辑器,如下图所示。

屏幕截图:属性的组合框编辑器

当单击属性或操作的每一部分时,该部分的选项卡将以粗体显示在组合框中。如果适用,操作或属性的选定部分还会出现一个值的下拉列表。

例如:

  1. 双击 EntryStation 类中的 stationID 属性。
  2. 单击 private 一词。
    请注意,可视性一词将以粗体显示。
  3. 按 Ctrl+向下方向键。
    将打开一个下拉列表,其中显示了可以为可视性属性选择的值。
  4. 从下拉列表中选择一个新值,然后按回车键。
    属性值将更新为新值。

    注意:您也可以直接在编辑器中键入新值。如果下拉列表中没有您需要的值,则可以使用向右和向左方向键来定位光标,然后键入适当的值。
  5. 对于本教程,请使用值 private,然后按回车键以关闭编辑器。

回到顶部


添加并定义其他的类

现在,您需要添加更多的类来完成简单的银行应用程序类图。添加类后,请使用到目前为止在本教程中学到的方法,按如下方式对类进行标记并添加属性和操作。

  1. 从建模组件面板的“基本”类别中,选择“类”图标 “类”图标的图像,然后在图编辑器中单击五次鼠标左键以放置其他类元素,如下图所示。

    屏幕截图:含有几个未命名元素的类图

  2. 在图编辑器中的任意位置单击鼠标右键以取消选择“类”图标。

    注意:您可以选择并拖动新的类元素来排列它们(如上图所示),以便您可以在图中清晰地到每个元素。
  3. 选择位于 EntryStation 元素下面的第一个未命名的类元素,然后将其命名为 ATM
  4. 在 ATM 类元素仍处于选定状态下,按如下方式添加属性:
    private float cashOnHand
  5. 向 ATM 类中添加另一个属性,并按如下方式进行定义:
    private float dispensed
    这些属性将显示在类图中。

    注意:向类中添加属性和操作时,将会增加类元素的大小。要改进图的外观,请根据需要移动类元素,以便可以清楚地看到每个元素。在执行此操作时,请务必选择类元素,而不是单个属性或操作。
  6. 选择位于 ATM 类下面的第一个类元素,然后将其命名为 Consortium
  7. 向 Consortium 类中添加操作。添加操作与添加属性类似。右键单击“操作”一词,后选择“插入操作”。
  8. 键入 validateAccountInfo,然后按回车键。
    IDE 将创建新的操作,如下所示:
    public void validateAccountInfo()
  9. 选择位于 ATM 类右侧的类元素,然后将其标记为 CashierStation
  10. 为此类添加两个操作,如下所示:
    public int verifyCard()

    public float verifyAmountAvailable()
  11. 将其余的两个类元素标记为 BranchUser
    对于 User 类,不添加任何属性或操作。
  12. 对于 Branch 类,请添加一个属性,如下所示:
    private char connected

回到顶部

生成并编辑 Java 源代码

本部分将说明如何为上一部分刚创建的类图生成 Java 源代码。创建 UML 模型后,您可以为其生成相应的 Java 源代码。如果修改了模型,则可以使用 UML“生成代码”功能来重新生成 Java 源代码。

本部分包含以下步骤:

生成 Java 源代码

您可以对 Java 应用程序进行建模,然后为模型生成相应的 Java 源代码。要生成源代码,您需要创建一个 Java 项目,然后使用该项目存储为 UML 项目生成的代码。

  1. 从主菜单中,选择“文件”>“新建项目”,然后执行以下操作:
    1. 在“类别”下选择“常规”。
    2. 在“项目”中,选择“Java 应用程序”。
    3. 单击“下一步”。
  2. “项目名称”字段中,键入 JavaPrj1
  3. 对于“项目位置”,单击“浏览”,然后选择目录 UMLTutorial
  4. 清除“设置为主项目”和“创建主类”的复选框标记。
  5. 单击“完成”。
    将显示一个进度对话框。创建 JavaPrj1 项目后,该项目会显示在“项目”窗口中。
  6. 在“项目”窗口中,右键单击 the UMLTutorialProject 节点,然后从弹出菜单中选择“生成代码”。
  7. 在“生成代码”对话框中,单击“浏览”。
  8. 在“选择目标源文件夹”对话框中,找到刚创建的 JavaPrj1 项目的源文件夹。
    例如:C:\Temp\UMLTutorial\JavPrj1\src
  9. 单击“打开”。
  10. 返回至“生成代码”对话框后,取消选中“备份现有的源文件”复选框,然后单击“确定”。
  11. 在“授权保存 UML 项目”对话框中,单击“确定”。
    IDE 将生成 Java 源代码,并在“输出”窗口显示代码生成的进度。
  12. 在“项目”窗口中,展开 JavaPrj1 > Source Package 节点,然后双击 <default package> 节点。
    请注意,该文件夹包含了与在 ClassDiagram 模型中创建的类元素同名的 Java 源文件。

回到顶部

使用 Java 源代码编辑器添加属性

现在,将使用源代码编辑器为 EntryStation 添加另一个属性。修改 Java 源文件后,您将使用逆向工程功能在相应的 UML 模型元素中反映所做的更改。

  1. 在“项目”窗口中,展开 UMLTutorialProject 节点和 Model 节点(如果需要)。
  2. 右键单击 EntryStation 节点,然后从弹出菜单中选择“导航至源”。
    将出现一个标记为 EntryStation.java 的源代码编辑器选项卡,其中显示了该类的源代码。
  3. 在源代码编辑器的第一个属性下面,键入以下代码:
    private boolean isOperating
  4. 按 Ctrl-S 组合键以保存所做的更改。
  5. 在源代码编辑器中单击鼠标右键,然后从弹出菜单中选择“逆向工程”。
    将显示“逆向工程”对话框。
  6. 在“逆向工程”对话框中选择“使用现有的 UML 项目”,然后选择 UMLTutorialProject 作为目标项目。
  7. 单击“确定”以启动逆向工程过程。
  8. 在“模型元素覆盖授权”对话框中,单击“是”以覆盖 EntryStation 类的现有模型。
  9. 单击 "ClassDiagram" 选项卡以将焦点返回至图编辑器。
    EntryStation 类元素中会显示 isOperating 属性。

    注意:单击图工具栏上的“适应窗口大小”按钮 “适应窗口大小”图标的图像 可以将图置于窗口的中心位置。此按钮允许您根据需要来调整缩放级别,以便显示所有的选项卡或释放图上的空间来放置更多的元素。

回到顶部

查找图元素

您可以使用多种方法快速查找图中或“项目”窗口中的对象。向图编辑器中的类元素添加的所有属性和操作都会显示在“项目”窗口中。这些属性使用属性图标 “属性”图标的图像 来表示。操作使用操作图标 “操作”图标的图像 来表示。

通过“项目”窗口查找图编辑器中的对象

  • 在“项目”窗口中,双击 "EntryStation" 节点。
    EntryStation 类元素将显示在图编辑器的中心位置并处于选中状态。

通过图编辑器查找“项目”窗口中的对象

  1. 在图编辑器中,选择 Consortium 类,然后单击鼠标右键。
  2. 从弹出菜单中选择“在模型中选择”。
    在“项目”窗口中,该目标对象的名称将处于突出显示状态。

回到顶部

为类和图生成文档

当您需要输入类、属性、操作和图的述性文档时,您可以使用三种不同的方式来生成这些文档。本部分包含了以下用于描述这三种方法的步骤:

 

使用 UML 文档窗口

  1. (可选)如果未显示“UML 文档”窗口,请选择“窗口”>“其他”>“UML 文档”。
  2. 在图编辑器中,选择 EntryStation 类元素。
  3. 在 UML 文档窗口的文本框内单击鼠标左键。
  4. 键入 Describes the actions of the EntryStation class
  5. 右键单击 EntryStation 类元素,然后从弹出菜单中选择“生成代码”。
  6. 在“生成代码”对话框中,单击“确定”。
  7. 在“授权保存 UML 项目”对话框中,单击“确定”。
    将生成新的 Java 代码。
  8. 单击 EntryStation.java 源代码编辑器选项卡。
    您会看到在文档窗口中键入的文本已被添加到 EntryStation.java 源文件中。

回到顶部


使用属性窗口为属性生成文档

  1. 单击 "ClassDiagram" 选项卡以将焦点返回至图编辑器。
  2. 在“项目”窗口中,展开 EntryStation 节点。
  3. 选择标记为 private boolean isOperating 的属性节点。
    将在 UML 属性窗口中显示其属性。
  4. 在属性窗口中,单击位于“文档”行上的省略号按钮 (...)。
    将打开一个定制编辑器,如下图所示。

    屏幕截图:包含“确定”和“取消”按钮的定制编辑器

  5. 键入文本 Maintains if EntryStation is operating,然后单击“确定”。
  6. 在图编辑器中,右键单击 EntryStation 类元素,然后从弹出菜单中选择“生成代码”。
  7. 在“生成代码”对话框中,单击“确定”。
  8. 在“授权保存 UML 项目”对话框中,单击“确定”。
    将生成新的 Java 代码。
  9. 单击 EntryStation.java 源代码编辑器选项卡。
    您会在紧靠 isOperating 属性上方的源代码中看到键入的文本。

回到顶部


使用“注释”图标为图生成文档

您可以使用位于建模组件面板中的“注释”图标为图中的选定元素添加一些特定的信息描述注释。

  1. 单击 "ClassDiagram" 选项卡以返回至图编辑器。
  2. 从建模组件面板的“注释”类别中,选择“注释”图标 “注释”图标的图像
  3. 在 CashierStation 元素的右侧或正上方单击鼠标左键。
    将在图中放置一个注释元素。
  4. 在图编辑器的任意位置单击鼠标右键,取消选中图标。
  5. 在注释元素处于选定状态下,键入 Cashier stations have limited funds,然后按回车键。
    注释元素中将显示该文本。
  6. 从建模组件面板的“注释”类别中,选择“链接”图标 “链接”图标的图像
  7. 在 CashierStation 内单击鼠标左键,然后在注释元素内再次单击鼠标左键。
    在注释元素和类元素之间将出现一条链接。
  8. 在图编辑器的任意位置单击鼠标右键,取消选中图标。
  9. 对 Branch 类元素重复执行步骤 2-8,以在图中放置并链接另一个注释元素。
    使用以下文本:A branch belongs to a Member Institution.

回到顶部

 

描绘链接和关联

关联描述的是一组具有通用结构和通用语义的链接。UML 功能不仅支持关联,而且还支持关联的多重性。“多重性”用于指定一个类有多少实例可以与联类的单个实例相关。“多重性”会限制相关组件的数量。本节包含以下主题:

 

描绘类关联

  1. 从建模组件面板的“关联”类别中,选择“聚合”图标 “聚合”图标的图像
  2. 在 ATM 元素内单击鼠标左键,然后单击 Consortium 元素。
    将在两个类之间绘制一条链接。
  3. 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。
    “项目”窗口中就会体现这两个类之间的关系,如下图所示。

    屏幕截图:“项目”窗口中的“聚合”节点

  4. 选择 ATM 和 Consortium 之间的聚合链接。
    选定该链接时,其颜色会变为蓝色。
  5. 将光标置于选定线条的中间位置附近,然后单击鼠标右键。
  6. 从弹出菜单中选择“选项卡”>“链接名称”。
  7. 在名称字段中键入 AccountVerification,然后按回车键。
    链接将被标记为下图所示的内容。

    屏幕截图:标记为聚合的链接

  8. 从建模组件面板的“关联”类别中,选择“关联”图标 “关联”图标的图像,然后在 CashierStation 与 Branch 之间构造一条链接。
  9. 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。

回到顶部

描绘限定关联

限定关联用于关联两个类和一个限定符。限定符是一个特殊的属性,用于减少关联的有效多重性。将在关联线的末尾(限定符所限定的类旁边)出现一个用小方框表示的限定关联。

以下步骤向您说明了如何在 ATM 类和 Consortium 类之间创建限定关联。

  • 右键单击连接 Consortium 类的聚合链接,然后选择“显示限定符”。在 Consortium 类元素上将附着一个限定符,如下图所示。

    屏幕截图:ATM 和 Consortium 类之间的限定关联

回到顶部

设置关联的多重性

您可能希望设置此关联的多重性。但是在默认情况下,这些选项卡是隐藏的。可以使用以下步骤来显示关联链接上的选项卡。

  1. 右键单击 Consortium 和 ATM 之间的链接,然后选择“选项卡”>“两个端点的多重性”。
    将关闭弹出菜单,并显示链接的选项卡。
  2. 右键单击聚合链接(在 ATM 元素附近)上部的小菱形,然后选择“设置多重性”。

    注意:如果未能显示正确的弹出菜单,请将 Consortium 元素移至距离 ATM 元素远一些的位置,以便延长聚合箭头。
  3. 选择 1..*
    请注意,此链接的下面部分被标记为 1,如下图所示。

    屏幕截图:已添加多重性标记的聚合链接

  4. 执行类似的步骤,您可以在 CashierStation 和 Branch 之间设置关联链接的多重性,如下图所示。

    屏幕截图:已设置多重性的关联链接

回到顶部

描绘泛化和继承

泛化是一个类与该类的一个或多个细化版本之间的关系。将细化的类称为超类,而每个细化后的版本称为子类。超类的属性和操作会体现在其子类中,因此每个子类都将继承超类的特性。您可以使用继承来组织类,以便共享通用结构。泛化链接表示一个类可以继承来自父类的一组属性和操作。

  1. 从建模组件面板的“基本”类别中,选择“泛化”图标 “泛化”图标的图像
  2. 在 ATM 类元素内单击鼠标左键,然后单击 EntryStation 类元素。
    将显示“选择要重定义的方法”对话框。
  3. 选中位于 ATM 节点旁边的复选框以选择所有方法,然后单击“确定”。
    选定的方法会添加到 ATM 类元素中,并且在 ATM 和 EntryStation 类元素之间生成一个泛化链接。
  4. 通过以下方法绘制另一个泛化链接:首先单击 CashierStation,然后再单击 EntryStation。
  5. 在“选择要重定义的方法”对话框中,选中位于 CashierStation 节点旁边的复选框以选择所有方法,然后单击“确定”。
  6. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Generalization" 图标。
  7. 成的图应如下图所示。

    屏幕截图:完成的类图

回到顶部

 

创建依赖关系图

通过使用 UML,您可以创建一个显示类元所有依赖关系的图。依赖关系图中描绘了以下关系类型:

  • 泛化
  • 关联
  • 实现
  • 包含给定类类型参数的操作

现在,为 ATM 类图创建一个依赖关系图。

  1. 在“项目”窗口中,右键单击 ATM 节点。
  2. 从弹出菜单中选择“生成依赖关系图”。
    将创建一个名为“ATM依赖关系”的依赖关系图,在图编辑器中打开该图,如下图所示。

    屏幕截图:依赖关系图

回到顶部

 

保存图并更新 Java 源文件

要保存完成的图并重新生成图的 Java 源文件,请执行以下步骤:请执行以下任务:

  1. 完成图后,右键单击 "ClassDiagram" 选项卡,然后从弹出菜单中选择“保存文档”。
    将关闭该菜单并保存类图。
  2. 在“项目”窗口中,右键单击 UMLTutorialProject 节点,然后从弹出菜单中选择“生成代码”。
  3. 在“生成代码”对话框中,接受默认的 JavaPrj1 源文件夹位置,并备份现有的源文件。
    或者,您可以单击“浏览”以查找并使用其他源文件夹。
  4. 单击“确定”。
    IDE 将生成代码,并在“输出”窗口显示代码生成过程的进度。JavaPrj1 项目的 Java 源文件夹中应该包含了您对图所做更改的更新内容。

    注意:如果在“生成代码”对话框中选中了“备份现有的源文件”复选框,并且选择使用相同的源文件夹,则 JavaPrj1 项目的源文件夹中还会包含所创建的备份文件。备份文件的名称与原始文件类似,只是文件扩展名中包含数字。例如,ATM.java 的备份文件会被命名为 ATM.java1

回到顶部

 

结束语

在本教程中,您了解了如何为一个简单的银行应用程序创建类图。我们已经学习了如何执行以下任务:

  • 创建类图
  • 使用建模组件面板中的图标向图添加元素
  • 在类元素上添加并定义属性和操作
  • 为图和图元素生成文档
  • 描绘类元素之间的链接和关联
  • 创建依赖关系图
  • 为图生成 Java 源代码文件
  • 保存图

 

回到顶部

未来计划

  • 要发送意见和建议,获取支持,了解关于 NetBeans IDE Java EE 开发特性的最新发展,请加入 nbusers@netbeans.org 邮件列表。

回到顶部

>> 更多 UML 建模文档

Companion
Projects:
                  Powered by: