UML:创建类图
在本教程中,您将了解如何使用 IDE 的 UML 功能来创建类图。本教程将说明用于创建类图元素的各种技术,以及如何为该图生成 Java 源代码。本教程旨在介绍 IDE 的一些 UML 建模类图功能,并说明用于创建类图元素的各种技术。
类图是应用程序的一种可视表示,用于显示应用程序的类以及这些类之间的关系。当打开类图时,IDE 会在建模组件面板中显示一组特定的 UML 元素图标。使用类图模型,可以描述应用程序中元素的静态结构。IDE 允许您以图形方式创建包含类的图。这些类在具有通用结构和行为的分层结构中排列,并且与其他类相关联。
预计时间:30 分钟
目录
教程要求
在开始之前,确保对本部分的要求有所了解。
前提条件
要使用本教程,您必须在系统中安装 IDE,并且应该熟悉 IDE 的基本组成部分。此外,还应该对 Java 编程语言和 UML 有基本的了解。有关 IDE 的基础知识,请参见联机帮助中的“IDE 基础知识”主题。http://www.uml.org/ 是 UML 资源的官方网站,为您了解 UML 技术和理论提供了很好的资源。
系统要求
本教程假定您的系统符合 NetBeans 6.5 发行说明的“系统要求”部分中指定的要求。
本教程所需要的软件
要学习本教程,您需要具备下表中列出的软件和资源。
| NetBeans IDE |
版本 6.5 |
| Java Development Kit (JDK) |
版本 6 或
版本 5 |
返回页首
使用类图
类可以定义每个元素实例所具有的属性以及每个元素执行或经历的操作。通过执行以下任务,可以在 UML 模型中呈现一个类:
- 创建表示该类的元素
- 命名该类
- 定义类属性
- 定义类操作
- 描绘链接和关联
- 添加文档
以下各部分介绍了如何为一个虚构的银行应用程序创建简单的类图。完成本教程中所述的操作步骤后,创建的类图应该与图 1 类似。此处显示的图仅供参考。请按照下一部分开头的说明绘制类图。
如果步骤标记为“可选”,则表明该步骤为附加任务或者是执行某项任务的替代方法。不执行这些可选步骤也能成功学完本教程。
图 1:类图样例
返回页首
创建类图并添加元素
本教程将使用在 UML:创建用例图教程中创建的 UML 项目。如果您尚未学完该用例教程,则可以在本地系统中创建一个名为 UMLTutorial 的目录,并在该目录中创建一个名为 UMLTutorialProject 的 Java 平台模型 UML 项目,然后继续学习本教程。
本部分说明了 UML 提供的一些基本 UML 任务,这些任务通过类图为简单的应用程序进行建模。本部分包含以下步骤:
返回页首
创建类图
- 启动 IDE 并打开先前创建的 UMLTutorialProject 项目(如有必要)。
- 在“项目”窗口中,展开 "UMLTutorialProject" 节点,然后右键单击“模型”节点。
- 从弹出式菜单中选择“添加”>“图”。将打开新建向导,并显示“创建新图”页。
- 在“图类型”列表中,选择“类图”。
- 在“图名称”字段中,键入 ClassDiagram。
- 保留“名称空间”字段中的缺省设置并单击“完成”。IDE 将执行以下操作:
- 在“模型”节点下创建 "ClassDiagram" 节点
- 在图编辑器中显示新图(该图此时为空)
- 打开建模组件面板
返回页首
添加并标记类元素
- 从建模组件面板的“基本”类别中选择 "Class" 图标
并在图编辑器中单击鼠标。此操作用于在图中放置类元素。
- 在图编辑器中的任何位置单击鼠标右键,取消选择该图标。注意:每次选择图标时,均可通过多次单击在图编辑器中放置相应元素的多个实例。
- 单击新添加的类元素以选择它(如果尚未选择)。
- 键入 EntryStation 并按 Enter 键。IDE 将执行以下操作:
- 使用名称 EntryStation 标记类元素
- 创建名为 EntryStation() 的公共操作
- 在“属性”窗口中显示类属性
- 在“项目”窗口的“模型”节点下添加名为 EntryStation 的类元素
返回页首
使用弹出式菜单添加属性
现在,您已绘制并标记了 EntryStation 元素,接下来需要描述其属性。
- 在图编辑器中选择 EntryStation 元素(如果尚未选择)。
- 右键单击“属性”一词,然后从弹出式菜单中选择“插入属性”。将打开一个单行编辑器,并显示以下信息:
可视性 类型 名称[范围]=initialValue{名称=值}
- 键入 stationID 并按 Enter 键。在 EntryStation 类中,将显示一个类型为 int 的属性 stationID,并且创建以下操作:public int getStationID()、public void setStationID(int val) 请注意,由于您保留了缺省设置,因此将创建 get 和 set 操作。
返回页首
添加操作
- 在图编辑器中,选择 EntryStation 类元素。
- 右键单击“操作”一词,然后从弹出式菜单中选择“插入操作”。将打开一个单行编辑器,并显示以下信息:
可视性 returnType 名称(参数) {属性, ...}
- 键入 validateEntryStation 并按 Enter 键。IDE 将创建一个新操作。
返回页首
(可选)编辑属性或操作
双击类中的某个属性或操作时,将打开一个组合框编辑器,如下图所示。

单击属性或操作的每个部分时,该部分的标签就会在组合框中以粗体格式显示。如果适用,操作或属性的选定部分还会具有一个值下拉列表。
例如:
- 双击 EntryStation 类中的 stationID 属性。
- 单击 "private" 一词。请注意,“可视性”一词将显示为粗体格式。
- 按 Ctrl+向下方向键。将打开一个下拉列表,其中显示了可以为可视性属性选择的值。
- 从下拉列表中选择一个新值并按 Enter 键。
该属性将更新为新的值。
注意:您也可以直接在编辑器中键入新值。如果下拉列表中没有您需要的值,则可以使用向右和向左方向键来定位光标,然后键入适当的值。
- 对于本教程,请使用 private 值并按 Enter 键以关闭编辑器。
返回页首
添加并定义其他类
现在,您需要添加更多类,以便完成简单的银行应用程序类图。添加类后,请使用到目前为止在本教程中学到的方法,按如下所述对类进行标记并添加属性和操作。
- 从建模组件面板的“基本”类别中选择 "Class" 图标
并在图编辑器中单击五次鼠标,以便放置其他类元素,如下图所示。

- 通过在图编辑器中的任何位置单击鼠标右键,取消选择 "Class" 图标。
注意:您可以选择并拖动新的类元素来排列它们(如上图所示),以便您可以在图中清楚地看到每个元素。
- 选择 EntryStation 元素下面的第一个未命名类元素,并将其命名为 ATM。
- 在 ATM 类元素仍处于选定状态的情况下,添加如下定义的属性:
private float cashOnHand
- 向 ATM 类中添加第二个属性并按照以下方式进行定义:
private float dispensed
这些属性将出现在类图中。
注意:向类中添加属性和操作时,类元素将会增大。要改进图的外观,请根据需要移动类元素,以便您可以清楚地看到每个元素。执行此操作时,请务必选择类元素,而不是选择单个属性或操作。
- 选择位于 ATM 类下面的第一个类元素,并将其命名为 Consortium。
- 向 Consortium 类中添加一个操作。添加操作与添加属性类似。右键单击“操作”一词并选择“插入操作”。
- 键入 validateAccountInfo,然后按 Enter 键。
IDE 将创建如下所示的新操作:
public void validateAccountInfo()
- 选择 ATM 类右侧的类元素并将其标记为 CashierStation。
- 为此类添加以下两个操作:
public int verifyCard()
public float verifyAmountAvailable()
- 将其余的两个类元素分别标记为 Branch 和 User。
对于 User 类,不添加任何属性和操作。
- 为 Branch 类添加如下定义的属性:
private char connected
返回页首
生成并编辑 Java 源代码
本部分将说明如何为上一部分刚创建的类图生成 Java 源代码。创建 UML 模型后,可以为其生成相应的 Java 源代码。如果修改模型,则可以使用 UML 的“生成代码”功能重新生成 Java 源代码。
本部分包含以下步骤:
生成 Java 源代码
您可以对 Java 应用程序进行建模,然后为模型生成相应的 Java 源代码。要生成源代码,您需要创建 Java 项目并使用该项目来存储为 UML 项目生成的代码。
- 从主菜单中选择“文件”>“新建项目”,然后执行以下操作:
- 在“类别”下选择“常规”。
- 在“项目”下,选择“Java 应用程序”。
- 单击“下一步”。
- 在“项目名称”字段中,键入 JavaPrj1。
- 对于“项目位置”,请单击“浏览”并选择 UMLTutorial 目录。
- 取消选中“设置为主项目”和“创建主类”复选框。
- 单击“完成”。
将出现一个进度对话框。创建 JavaPrj1 项目后,该项目将显示在“项目”窗口中。
- 在“项目”窗口中,右键单击 "UMLTutorialProject" 节点,然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中,单击“浏览”。
- 在“选择目标源文件夹”对话框中,找到刚创建的 JavaPrj1 项目的源文件夹。
例如:C:\Temp\UMLTutorial\JavPrj1\src
- 单击“打开”。
- 返回至“生成代码”对话框,取消选中“备份现有的源文件”复选框,然后单击“确定”。
- 在“授权保存 UML 项目”对话框中,单击“是”。
IDE 将生成 Java 源代码,并且“输出”窗口将显示代码生成过程的进度。
- 在“项目”窗口中,展开 "JavaPrj1" >“源包”节点,然后双击 "<缺省包>" 节点。
请注意,该文件夹包含了与在 ClassDiagram 模型中创建的类元素同名的 Java 源文件。
返回页首
使用 Java 源代码编辑器添加属性
现在,将使用源代码编辑器向 EntryStation 中添加另一个属性。修改 Java 源文件后,您将使用“逆向工程”功能在相应的 UML 模型元素中反映所做的更改。
- 在“项目”窗口中,展开 "UMLTutorialProject" 节点和“模型”节点(如有必要)。
- 右键单击 "EntryStation" 节点,然后从弹出式菜单中选择“导航至源”。
将出现标记为 "EntryStation.java" 的源代码编辑器标签,并显示该类的源代码。
- 在源代码编辑器中,在第一个属性下面键入以下代码:
private boolean isOperating
- 按 Ctrl-S 组合键保存所做的更改。
- 在源代码编辑器中单击鼠标右键,然后从弹出式菜单中选择“逆向工程”。
将显示“逆向工程”对话框。
- 在“逆向工程”对话框中选中“使用现有的 UML 项目”,然后选择 "UMLTutorialProject" 作为目标项目。
- 单击“确定”以启动逆向工程过程。
- 在“模型元素覆盖授权”对话框中,单击“是”以覆盖 EntryStation 类的现有模型。
- 单击 "ClassDiagram" 标签以返回至图编辑器。
isOperating 属性将出现在 EntryStation 类元素中。
注意:单击图工具栏中的“适当地调整宽度大小”按钮可以将图置于窗口的中心位置。此按钮允许您根据需要来调整缩放级别,以便显示所有的标签或释放图上的空间来放置更多的元素。
返回页首
查找图元素
您可以使用多种方法快速查找图中和“项目”窗口中的对象。向图编辑器中的类元素添加的所有属性和操作都会显示在“项目”窗口中。属性由属性图标
来表示。操作由操作图标
来表示。
通过“项目”窗口查找图编辑器中的对象
- 在“项目”窗口中,双击 "EntryStation" 节点。
在图编辑器中,EntryStation 类元素将处于选定状态且居中显示。
通过图编辑器查找“项目”窗口中的对象
- 在图编辑器中,选择 Consortium 类,然后单击鼠标右键。
- 从弹出式菜单中选择“在模型中选择”。
在“项目”窗口中,目标对象的名称将处于突出显示状态。
返回页首
为类和图生成文档
您可以使用三种不同的方法来为类、属性、操作和图输入描述性文档。本部分包含以下步骤,用于介绍这三种方法:
使用“UML 文档”窗口
- (可选)如果未显示“UML 文档”窗口,请选择“窗口”>“其他”>“UML 文档”。
- 在图编辑器中,选择 EntryStation 类元素。
- 在“UML 文档”窗口的文本框内单击鼠标。
- 键入 Describes the actions of the EntryStation class。
- 右键单击 EntryStation 类元素,然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中,单击“确定”。
- 在“授权保存 UML 项目”对话框中,单击“是”。
将生成新的 Java 代码。
- 单击 "EntryStation.java" 源代码编辑器标签。
您将看到在文档窗口中键入的文本已被添加到 EntryStation.java 源文件中。
返回页首
使用“属性”窗口为属性生成文档
- 单击 "ClassDiagram" 标签以将焦点返回至图编辑器。
- 在“项目”窗口中,展开 "EntryStation" 节点。
- 选择标记为 private boolean isOperating 的属性节点。
将在 UML“属性”窗口中显示其属性。
- 在“属性”窗口中,单击“文档”行中的省略号按钮 (...)。
将打开一个定制编辑器,如下图所示。

- 键入文本 Maintains if EntryStation is operating,然后单击“确定”。
- 在图编辑器中,右键单击 EntryStation 类元素,然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中,单击“确定”。
- 在“授权保存 UML 项目”对话框中,单击“是”。
将生成新的 Java 代码。
- 单击 "EntryStation.java" 源代码编辑器标签。
您将在紧靠 isOperating 属性上方的源代码中看到键入的文本。
返回页首
使用 "Comment" 图标为图生成文档
您可以使用位于建模组件面板中的 "Comment" 图标添加注释,以说明图中选定元素的特定信息。
- 单击 "ClassDiagram" 标签以返回至图编辑器。
- 从建模组件面板的“注释”类别中选择 "Comment" 图标
。
- 在 CashierStation 元素的右侧或正上方单击鼠标。
将在图中放置一个注释元素。
- 右键单击图编辑器中的任意位置,取消选择该图标。
- 在注释元素处于选定状态的情况下,键入 Cashier stations have limited funds,然后按 Enter 键。
注释元素中将显示该文本。
- 单击注释元素的边缘,然后从上下文组件面板中选择 "Link Comment" 图标
。
- 在 CashierStation 内单击鼠标,然后在注释元素内再次单击鼠标。
将在注释元素和类元素之间出现一条链接线。
- 右键单击图编辑器中的任意位置,取消选择该图标。
- 重复执行步骤 2 至 8,以便在图中为 "Branch" 类元素放置并链接另一个注释元素。
请在此操作过程中使用以下文本:A branch belongs to a Member Institution。
返回页首
描绘链接和关联
关联描述的是一组具有通用结构和通用语义的链接。UML 功能不仅支持关联,而且还支持关联的多重性。多重性用于指定一个类有多少实例可以与关联类的单个实例相关。多重性会限制相关组件的数量。本部分包含以下步骤:
描绘类关联
- 在 ATM 元素内单击鼠标以打开上下文组件面板,然后选择 "Aggregation" 图标
。
- 在 ATM 元素内再次单击鼠标,然后单击 Consortium 元素。
将在这两个类之间绘制一条链接线。
- 在图编辑器中的任何位置单击鼠标右键,取消选择该图标。
- 选择 ATM 和 Consortium 之间的聚合链接。
当该链接处于选定状态时,其颜色将变为蓝色。
- 将光标指向选定链接线的中间位置附近,然后单击鼠标右键。
- 从弹出式菜单中选择“标签”>“链接名称”。
- 在名称字段中键入 AccountVerification,然后按 Enter 键。
将为该链接添加标记,如下图所示。

- 右键单击 CashierStation,从上下文组件面板中选择 "Association" 图标
,然后在 CashierStation 和 Branch 之间绘制一条链接线。
- 在图编辑器中的任何位置单击鼠标右键,取消选择该图标。
返回页首
描绘限定关联
限定关联用于关联两个类和一个限定符。限定符是一个特殊的属性,用于减少关联的有效多重性。将在关联线的末尾(限定符所限定的类旁边)出现一个用小方框表示的限定关联。
以下步骤说明了如何在 ATM 类和 Consortium 类之间创建限定关联。
- 右键单击连接 Consortium 类的聚合链接,然后选择“显示限定符”。将在 Consortium 类元素上附着一个限定符,如下图所示。

返回页首
设置关联的多重性
您可能希望设置此关联的多重性。但是,缺省情况下,这些标签是隐藏的。可以使用下列步骤来显示关联链接上的标签。
- 右键单击 Consortium 和 ATM 之间的链接,然后选择“标签”>“两个端点的多重性”。
将关闭弹出式菜单,并显示该链接的标签。
- 右键单击聚合链接上面部分的小菱形(在 ATM 元素旁边),然后选择“设置多重性”。
注意:如果未能显示正确的弹出式菜单,请将 Consortium 元素移至距离 ATM 元素远一些的位置,以便延长聚合箭头。
- 选择 "1..*"。
请注意,该链接的下面部分将被标记为 1,如下图所示。

- 执行类似步骤,为 CashierStation 和 Branch 之间的关联链接设置多重性,如下图所示。

返回页首
描绘泛化和继承
泛化是一个类与该类的一个或多个细化版本之间的关系。细化的类称为超类,每个细化后的版本称为子类。超类的属性和操作会体现在其子类中,因此每个子类都将继承超类的特性。您可以使用继承来组织类,以便共享通用结构。泛化链接表示一个类可以继承来自父类的一组属性和操作。
- 在 ATM 类元素内单击鼠标以打开上下文组件面板。选择 "Generalization" 图标
。
- 在 ATM 类元素内单击鼠标,然后单击 EntryStation 类元素。
将显示“选择要重新定义的方法”对话框。
- 选中 "ATM" 节点旁边的复选框以选择所有方法,然后单击“确定”。
选定的方法将被添加到 ATM 类元素中,并且将在两个类元素之间出现一条泛化链接线。
- 通过以下方法绘制另一个泛化链接:首先单击 CashierStation,然后单击 EntryStation。
- 在“选择要重新定义的方法”对话框中,选中 "CashierStation" 节点旁边的复选框以选择所有方法,然后单击“确定”。
- 在图编辑器中的任何位置单击鼠标右键,取消选择 "Generalization" 图标。
- 完成的图应该与下图类似。

返回页首
创建依赖关系图
通过使用 UML,可以创建一个显示类元所有依赖关系的图。依赖关系图中描绘了以下关系类型:
现在,将为 ATM 类图创建依赖关系图。
- 在“项目”窗口中,右键单击 "ATM" 节点。
- 从弹出式菜单中选择“生成依赖关系图”。
将创建一个名为“ATM 依赖关系”的依赖关系图,并在图编辑器中打开该图,如下图所示。

返回页首
保存图并更新 Java 源文件
以下步骤用于保存已完成的图并重新生成图的 Java 源文件。请执行以下步骤:
- 完成图后,右键单击 "ClassDiagram" 标签,然后从弹出式菜单中选择“保存文档”。
将关闭菜单并保存该类图。
- 在“项目”窗口中,右键单击 "UMLTutorialProject" 节点,然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中,接受缺省的 JavaPrj1 源文件夹位置,并备份现有的源文件。
或者,可以单击“浏览”以查找并使用其他源文件夹。
- 单击“确定”。
IDE 将生成代码,并且“输出”窗口将显示代码生成过程的进度。JavaPrj1 项目的 Java 源文件夹应该进行了更新,包含您对图所做的更改。
注意:对于以下情况,JavaPrj1 项目的源文件夹还会包括创建的备份文件:在“生成代码”对话框中选中了“备份现有的源文件”复选框,并且选择使用相同的源文件夹。备份文件的名称与原始文件类似,只是文件扩展名中包含数字。例如,ATM.java 的备份文件会被命名为 ATM.java1。
返回页首
小结
在本教程中,您了解了如何为一个简单的银行应用程序创建类图。现在,您已学会了如何执行以下任务:
- 创建类图
- 使用建模组件面板中的图标向图添加元素
- 在类元素上添加并定义属性和操作
- 为图和图元素生成文档
- 描绘类元素之间的链接和关联
- 创建依赖关系图
- 为图生成 Java 源代码文件
- 保存图
返回页首
后续步骤
返回页首