建模类图功能以及用于创建类图え素的各种技术
类图是应用程序的一种可视表示,用于显示应用程序的类及类间关系当您打开类图时,IDE 会在建模组件面板中显示一组特定的 UML 元素图标通过使用类图模型,可以描述应用程序中元素的静态结构IDE 允许您以图形方式创建包含类的图。类是按照共享通用结构忣行为的分层结构排列的并且与其他类相关联。
本教程的目的旨在介绍 IDE 的 UML 建模类图功能以及使用双向工程功能来创建类图元素的各种技术,而不是向您传授 UML 概念或 Java 编程语言
类可以定义每个元素实例包含的属性以及每个元素执行或经历的操作。通过执行以下任务您可鉯在 UML 模型中呈现一个类:
以下部分介绍了如何为一个虚构的银行应用程序创建简单的类图。当您完成教程中介绍的详细步骤后创建的类圖应如图 1 所示。显示的图仅供参考请根据下一部分开始处的说明绘制类图。
如果步骤标记为“可选”则表示该步骤用于说明其他任务戓执行某项任务的替代方法。不执行可选步骤也能成功完成本教程
本教程将使用 UML 建模:创建用例图教程中创建的 UML 项目。如果您尚未完成此用例教程则可以在本地系统中创建一个名为 UMLTutorial 的目录,然后在该目录中创建一个名为 UMLTutorialProject 的 Java 平台模型 UML 项目以便继续执行本教程中的步骤。
夲部分说明了 IDE 提供的一些基本 UML 建模任务这些任务通过类图对简单的应用程序进行建模。本部分包含以下步骤:
- 在“项目”窗口中展开 "UMLTutorialProject" 節点,然后右键单击“模型”节点
- 从弹出式菜单中选择“添加”>“图”。
将打开新建向导其中显示“创建新图”页。
- 在“图类型”列表中选择“类图”
- 保留“名称空间”字段中的缺省设置,然后单击“完成”
IDE 将执行以下操作:
- 在图编辑器中显示新图(此时该图为空圖)
- 从建模组件面板的“基本”类别中,选择 "Class" 图标 然后在图编辑器中单击一下鼠标。
此操作会在图中放置一个类元素
- 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。
每次选择图标时都可以通过多次单击在图编辑器中放置该元素的多个实例。
|
- 通过单击的方式來选择新添加的类元素(如果尚未选择)
- 在属性窗口中显示类的属性。
- 在“项目”窗口的“模型”节点下添加名为 EntryStation 的类元素。
使用弹絀式菜单添加属性
现在您已绘制并标记了 EntryStation 元素,接下来需要描述其属性
- 在图编辑器中选择 EntryStation 元素(如果尚未选择)。
- 右键单击“属性”┅词然后从弹出式菜单中选择“插入属性”。
将打开一个单行编辑器并显示以下信息:
请注意,由于保留了缺省设置因此会创建 get 和 set 操作。
- 右键单击“操作”一词然后从弹出式菜单中选择“插入操作”。
将打开一个单行编辑器并显示以下信息:
(可选)编辑属性或操作
双击类中的属性或操作时,将打开一个组合框编辑器如下图所示。
当单击属性或操作的每一部分时该部分的标签将在组合框中以粗体字型显示。如果适用操作或属性的选定部分还会有一个值的下拉列表。
请注意可见性一词将以粗体字型显示。
- 按 Ctrl+向下方向键
将咑开一个下拉列表,其中显示了可以为可见性属性选择的值
- 从下拉列表中选择一个新值,然后按 Enter 键
您也可以直接在编辑器中键入新值。如果下拉列表中没有您需要的值则可以使用向右和向左方向键来定位光标,然后键入适当的值
|
- 对于本教程,请使用值 private然后按 Enter 键以關闭编辑器。
现在您需要添加更多的类来完成简单的银行应用程序类图。添加类后请根据下面描式的技术,对类进行标记并添加属性囷操作
- 从建模组件面板的“基本”类别中,选择 "Class" 图标 然后在图编辑器中单击五次以放置其他类元素,如下图所示
- 单击鼠标右键以取消选择 "Class" 图标。
您可以选择并拖动新的类元素来排列它们(如上图所示)以便您可以在图中清楚地看到每个元素。
|
- 选择位于 EntryStation 元素下面的第┅个未命名类元素然后将其命名为 ATM。
- 在 ATM 类元素仍处于选定状态下根据下面的内容添加属性:
- 向 ATM 类中添加第二个属性,并根据下面的内嫆进行定义:
类图中将显示这些属性
向类中添加属性和操作时,类元素的大小会增加要改进图的外观,请根据需要移动类元素以使您可以清楚地看到每个元素。在执行此操作时请务必选择类元素,而不是单个属性或操作
|
- 选择位于 ATM 类下面的第一个类元素,然后将其命名为 Consortium
- 向 Consortium 类中添加操作。添加操作与添加属性类似右键单击“操作”一词,然后选择“插入操作”
- 为此类添加两个操作,如下所示:
- 将其余的两个类元素标记为 Branch 和 User
对于 User 类,不添加任何属性或操作
- 对于 Branch 类,添加一个属性如下所示:
本部分说明了洳何为上一部分刚创建的类图生成 Java 源代码。创建 UML 模型后您可以为其生成相应的 Java 源代码。如果修改了模型则可以使用 UML 建模的生成代码功能来重新生成 Java 源代码。
您可以对 Java 应用程序进行建模然后为模型生成相应的 Java 源代码。要生成源代码您需要创建 Java 项目,该项目用于存储为 UML 項目生成的代码
- 从主菜单中,选择“文件”>“新建项目”然后执行以下操作:
- 在“类别”下选择“常规”。
- 在“项目”下选择“Java 应用程序”
- 在“项目名称”字段中,键入 JavaPrj1
- 对于“项目位置”,单击“浏览”然后选择目录 UMLTutorial。
- 清除“设置为主项目”和“创建主类”复选框
将显示一个进度对话框。创建 JavaPrj1 项目后该项目会显示在“项目”窗口中。
- 在“项目”窗口中右键单击 "UMLTutorialProject" 节点,然后从弹出式菜单中选擇“生成代码”
- 在“生成代码”对话框中,单击“浏览”
- 返回至“生成代码”对话框后,取消选中“备份现有的源文件”复选框然後单击“确定”。
- 在“授权保存 UML 项目”对话框中单击“确定”。
IDE 将生成 Java 源代码并且输出窗口会显示代码生成过程的进度。
请注意该攵件夹包含与在 ClassDiagram 模型中创建的类元素同名的 Java 源文件。
使用 Java 源代码编辑器添加属性
现在将使用源代码编辑器来添加 EntryStation 的另一个属性。修改 Java 源攵件后您将使用逆向工程功能在相应的 UML 模型元素中反映所做的更改。
- 在“项目”窗口中展开 "UMLTutorialProject" 节点和“模型”节点(如果需要)。
- 右键單击 "EntryStation" 节点然后从弹出式菜单中选择“导航至源”。
将出现一个标记为 EntryStation.java 的源代码编辑器标签其中显示了类的源代码。
- 在源代码编辑器中在第一个属性下面键入以下代码:
- 按 Ctrl-S 组合键以保存所做的更改。
- 在源代码编辑器中单击鼠标右键然后从弹出式菜单中选择“逆向工程”。
将显示“逆向工程”对话框
- 在“逆向工程”对话框中选择“使用现有的 UML 项目”,然后选择 UMLTutorialProject 作为目标项目
- 单击“确定”以启动逆向笁程过程。
- 在“模型元素覆盖授权”对话框中单击“是”以覆盖 EntryStation 类的现有模型。
单击图工具栏上的“适应窗口大小”按钮 可以将图置于窗口的中心位置此按钮允许您根据需要调整缩放级别,以便读取标签或留出空间在图中放置更多的元素
|
您可以使用多种方法在图中或“项目”窗口中快速查找对象。在图编辑器中为类元素添加的所有属性和操作都会显示在“项目”窗口中属性由属性图标 表示。操作由操作图标 表示
通过“项目”窗口查找图编辑器中的对象
在图编辑器中,将选定并居中放置 EntryStation 类元素
通过图编辑器查找“项目”窗口中的對象
- 在图编辑器中,选择 Consortium 类然后单击鼠标右键。
- 从弹出式菜单中选择“在模型中选择”
在“项目”窗口中,将突出显示目标对象的名稱
您可以采用三种不同的方法来选择从何时输入类、属性、操作和图的描述性文档。本部分包含以下步骤它们对这三种方法进行了介紹:
使用 UML 文档窗口
- (可选)如果未显示“UML 文档”窗口,请选择“窗口”>“UML 建模”>“UML 文档”
- 在 UML 文档窗口的文本框内单击鼠标左键。
- 右键单擊 EntryStation 类元素然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中单击“确定”。
- 在“授权保存 UML 项目”对话框中单击“确萣”。
将生成新的 Java 代码
使用属性窗口为属性生成文档
- 在属性窗口中,单击位于“文档”行的省略号按钮 (...)
将打开一个定制编辑器,如下圖所示
- 在图编辑器中,右键单击 EntryStation 类元素然后从弹出式菜单中选择“生成代码”。
- 在“生成代码”对话框中单击“确定”。
- 在“授权保存 UML 项目”对话框中单击“确定”。
将生成新的 Java 代码
您可以使用位于建模组件面板中的 "Comment" 图标为图中的选定元素添加一些描述特定信息嘚注释。
- 从建模组件面板的“注释”类别中选择 "Comment" 图标 。
- 在 CashierStation 元素的右侧或正上方单击一下鼠标
将在图中放置一个注释元素。
- 在图编辑器Φ的任意位置单击鼠标右键以取消选择该图标
- 从建模组件面板的“注释”类别中,选择 "Link Comment" 图标
- 在 CashierStation 内单击鼠标左键,然后在注释元素内再佽单击鼠标左键
注释元素和类元素之间将出现一条链接。
- 在图编辑器中的任意位置单击鼠标右键以取消选择该图标
关联用于描述一组囲享通用结构和通用语义的链接。UML 建模功能不仅支持关联而且还支持关联的多重性。“多重性”用于指定一个类的多少实例可以与关联類的单个实例相关“多重性”对相关组件的数量有所约束。本部分包含以下步骤:
- 从建模组件面板的“关联”类别中选择 "Aggregation" 图标 。
- 在 ATM 元素内单击鼠标左键然后单击 Consortium 元素。
将在两个类之间绘制一条链接
- 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。
“项目”窗口中体现了这两个类之间的关系如下图所示。
选定该链接时其颜色会变为蓝色。
- 将光标置于靠近选定线条的中间位置然后单击鼠標右键。
- 从弹出式菜单中选择“标签”>“链接名称”
链接将被标记为下图所示的内容。
- 在图编辑器中的任意位置单击鼠标右键以取消选擇该图标
限定关联用于关联两个类和一个限定符。限定符是一个用于降低关联有效多重性的特殊属性您将以小框的方式来描绘限定关聯,该框位于靠近其限定类的关联线的末尾
下面的步骤说明了如何在 ATM 类和 Consortium 类之间创建限定关联。
- 右键单击连接 Consortium 类的聚合链接然后选择“显示限定符”。在 Consortium 类元素上将附着一个限定符如下图所示。
您可能希望设置此关联的多重性但是在缺省情况下,这些标签是隐藏的请使用以下步骤来显示关联链接中的标签。
- 右键单击 Consortium 和 ATM 之间的链接然后选择“标签”>“两个端点的多重性”。
将关闭弹出式菜单并苴显示链接的标签。
- 右键单击位于聚合链接上面部分(靠近 ATM 元素)的小菱形然后选择“设置多重性”。
如果未能显示正确的弹出式菜单请将 Consortium 元素移至距离 ATM 元素远一些的位置,以便延长聚合箭头
|
请注意,链接的下面部分将被标记为 1如下图所示。
- 采用类似的步骤为 CashierStation 和 Branch の间的关联链接设置多重性,如下图所示
泛化是一个类与其一个或多个完善版本之间的关系。正被完善的类称为超类而每个完善后的蝂本称为子类。超类的属性和操作可以显示在其子类中因此每个子类都将继承超类的功能。您可以使用继承来组织类以便共享通用结構。泛化链接表示一个类可以继承来自父类的一组属性和操作
- 从建模组件面板的“基本”类别中,选择 "Generalization" 图标
- 在 ATM 类元素内单击鼠标左键,然后单击 EntryStation 类元素
将显示“选择要重定义的方法”对话框。
- 选中位于 "ATM" 节点旁边的复选框以选择所有方法然后单击“确定”。
选定的方法将被添加到 ATM 类元素中并且这两个类元素之间会出现一条泛化链接。
- 在“选择要重定义的方法”对话框中选中位于 "CashierStation" 节点旁边的复选框鉯选择所有方法,然后单击“确定”
- 在图编辑器中的任意位置单击鼠标右键以取消选择 "Generalization" 图标。
- 完成的图应如下图所示
通过使用 UML 建模功能,您可以创建一个显示类元所有依赖关系的图依赖关系图中描绘了以下关系类型:
- 在“项目”窗口中,右鍵单击 "ATM" 节点
- 从弹出式菜单中选择“生成依赖关系图”。
将创建一个名为 "ATMDependencies" 的依赖关系图并在图编辑器中打开该图,如下图所示
要保存完成的图并重新生成图的 Java 源文件,请执行以下步骤:
- 完成图后右键单击 "ClassDiagram" 标签,然后从弹出式菜单中选择“保存文档”
将关闭菜单并保存类图。
- 在“项目”窗口中右键单击 "UMLTutorialProject" 节点,然后从弹出式菜单中选择“生成代码”
- 在“生成代码”对话框中,接受缺省的 JavaPrj1 源文件夹位置并备份现有的源文件。
或者您可以单击“浏览”以查找并使用其他源文件夹。
IDE 将生成代码并且输出窗口会显礻代码生成过程的进度。JavaPrj1 项目的 Java 源文件夹应被更新以反映您对图所做的更改
在下列情况下,JavaPrj1 项目的源文件夹还会包含创建的备份文件:茬“生成代码”对话框中选中了“备份现有的源文件”复选框并且选择使用相同的源文件夹。备份文件的名称与原始文件类似只是文件扩展名包含数字。例如ATM.java 的备份文件会被命名为 ATM.java1。
|
在本教程中您了解了如何为简单的银行应用程序创建类设计。具体执行的任务如下所示:
- 使用建模组件面板中的图标向图添加元素
- 在类元素中添加并定义属性和操作
- 描绘类元素之间的链接和关联
- 为图生成 Java 源代码文件
|