UML 建模(4):创建类图


原文地址:http://gceclub.sun.com.cn/prodtech/javatools/jsenterprise/learning/tutorials/jse8/uml_class_diagram.html

在本教程中,您将了解如何使用 Sun Java Studio Enterprise 集成开发环境 (IDE) 的 UML 建模功能来创建类图。

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

本教程的目的在于介绍 IDE 的 UML 建模类图功能,并展示采用双向工程功能创建类图元素的各种技术。本教程不介绍 UML 概念和 Java 编程语言。

要使用本教程,您必须在系统中安装 Java Studio Enterprise IDE,并且应该熟悉 IDE 的基本组成部分。同时,还应该对 Java 编程语言和 UML 建模有基本的了解。要了解 Java Studio Enterprise IDE 的基础知识,请参见联机帮助中的“IDE 基础知识”主题。http://www.uml.org/ 是 UML 资源的官方网站,其中提供了大量有关 UML 建模技术及理论的资源。

 
目录

使用类图

类可以定义每个元素实例包含的属性以及每个元素执行或经历的操作。在 UML 模型中表示一个类时,您可以执行下列任务:

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

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

如果步骤标记为“可选”,则表示该步骤可用来说明其他任务或者说明执行任务的另一种方法。不执行可选步骤也能成功完成本教程。

屏幕截图:完成的类图样例
图 1:类图样例


返回页首

创建类图并使用双向工程

本教程使用在 Java Studio Enterprise 8 教程 UML 建模:创建用例图中创建的 UML 项目。如果您尚未完成用例教程,那么可以在本地系统中创建一个名为 UMLTutorial 的目录,并在该目录中创建一个名为 UMLTutorialProject 的 Java 平台模型 UML 项目,然后继续本教程。

本部分包含以下内容:

创建类图

  1. 如果需要,请启动 Java Studio Enterprise 8 IDE,并打开以前创建的 UMLTutorialProject 项目。

  2. 在“项目”窗口中,展开 "UMLTutorialProject" 节点,然后右键单击“模型”节点。

  3. 从上下文菜单中选择“添加”>“图”。

    将打开“新建向导”窗口,并显示“创建新图”页面。

  4. 在“图类型”列表中选择“类图”。

  5. 在“图名称”字段中键入 ClassDiagram

  6. 保留“名称空间”字段中的缺省设置,并单击“确定”。

    IDE 将执行以下操作:

    • 在“模型”节点下创建 ClassDiagram 节点
    • 在图编辑器中显示新图(此时该图为空)
    • 打开“建模组件面板”

设置双向工程

您可以在为 Java 应用程序建模的同时创建 Java 源代码。要生成源代码,需创建一个 Java 项目并将其与 UML 项目相关联。当 Java 项目与 UML 项目关联时,您在 UML 项目中所做的更改就会立即显示在 Java 项目中,而 Java 项目中的更改也会对 UML 项目和图进行自动更新。

  1. 从 IDE 的主菜单中选择“文件”>“新建项目”,然后执行下列操作:

    a. 在“类别”下选择“常规”。

    b. 在“项目”下选择“Java 应用程序”。

    c. 单击“下一步”。

  2. 在“项目名称”字段中键入 JavaPrj1

  3. 对于“项目位置”,请单击“浏览”按钮,然后选择目录 UMLTutorial

  4. 清除“设置为主项目”和“创建主类”复选框。

  5. 单击“完成”。

    将显示一个进度对话框(扫描项目的类路径)。
    在创建了 JavaPrj1 项目后,它会显示在“项目”窗口中。

  6. 在“项目”窗口中,右键单击 "UMLTutorialProject" 节点,然后从上下文菜单中选择“属性”。

    将显示“项目属性”向导。

  7. 选中“生成代码”复选框。

  8. 单击“选择 Java 项目”并选择刚刚创建的 Java 项目 JavaPrj1

  9. 单击“确定”。

  10. 再次单击“确定”以关闭向导。

更改 UML 首选项(可选)

创建类元素的属性时,会自动生成存取操作。如果您不希望在每次创建属性时都创建 getset 公共操作,则可以关闭该功能。缺省设置是创建这些操作。就本教程而言,应使用缺省的首选项设置。

如果要在完成本教程后更改首选项,可使用下列步骤:

  1. 从 IDE 主菜单中选择“工具”>“选项”。

    将打开“选项”对话框。

  2. 展开 "UML" 和“双向工程”节点

  3. 选择 "Java"。

    右侧的“属性”窗口将显示 Java 双向工程的所有首选项。

  4. 设置“创建存取方法”首选项。

    “注意”图标  如果将此首选项设置为“”,则在添加属性时,将不会创建 getset 操作。
    就本教程而言,应将该选项设置为“”。

返回页首

添加并定义类图元素

本部分通过利用 Java Studio Enterprise UML 建模功能,采用类图为一个简单的应用程序建模,以此来说明一些基本的 UML 建模任务。本部分包含以下内容:

添加并标记类元素

  1. 从“建模组件面板”的“基本”类别选择“类”图标 “类”图标,然后在图编辑器中单击一下鼠标。

    该操作将在图中放置一个类元素。

  2. 单击鼠标右键以取消选择该图标。

    “注意”图标  每次选择图标时,都可以通过多次单击在图编辑器中放置该元素的多个实例。

     

  3. 如果尚未选择,请通过单击的方式来选择新添加的类元素。

  4. 键入 EntryStation,然后按 Enter 键。

    IDE 将执行以下操作:

    • 用名称 EntryStation 标记类元素
    • 创建一个名为 EntryStation() 的公共操作
    • 在“属性”窗口中显示“类”属性
    • 在“项目”窗口中的“模型”节点下,添加名称为 EntryStation 的类元素
    • 在关联的 Java 项目中创建相应的 Java 源文件
返回页首

使用上下文菜单添加属性

截至目前,您已经绘制并标记了 EntryStation 元素,现在需要描述其属性。请注意,因为保留了缺省设置,所以要创建 getset 操作。

  1. 如果尚未选择,请在图编辑器中选择 EntryStation 元素。

  2. 右键单击“属性”一词,然后从上下文菜单中选择“插入属性”。

    此时会打开一个单行编辑器,并显示以下信息:

     

    可视性类型 名称[范围]=initialValue{名称=值}
                    
     
  3. 键入 stationID,然后按 Enter 键。

    EntryStation 类中便会出现一个类型为 int 名为 stationID 的属性,同时还会在该类中创建以下操作:

    public int getStationID()
                    public void setStationID(int val)
                    
     
返回页首

使用 Java 源编辑器添加属性

使用源编辑器输入第二个属性。

  1. 在“项目”窗口中,展开 "UMLTutorialProject" 节点和“模型”节点。

  2. 右键单击 "EntryStation" 节点,从上下文菜单中选择“导航到源”。

    将出现一个标记为 EntryStation.java 的源编辑器标签,它显示了类的源代码。

  3. 在源编辑器中,请在第一个属性后面键入以下代码:

    private boolean isOperating;
                    
     
  4. 单击 "ClassDiagram" 标签返回到图编辑器。

    该属性与其 getset 操作一起出现在类元素中。

    “注意”图标  单击“图”工具栏中的“适应窗口大小”按钮 “适应窗口大小”图标 将图放在窗口居中的位置。如果需要,您可以调整缩放级别以便查看标签,或腾出空间在图中放置更多的元素。

返回页首

添加操作

  1. 选择 EntryStation 类元素

  2. 右键单击“操作”一词,然后从上下文菜单中选择“插入操作”。

    此时会打开一个单行编辑器,并显示以下信息:

     

    可视性 returnType 名称(参数) {属性, ...}
                    
     

     

  3. 键入 validateEntryStation,然后按 Enter 键。

    此时 IDE 会创建一个新的操作。

返回页首

编辑属性或操作(可选)

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

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

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

例如:

  1. 双击 EntryStation 类中的 stationID 属性。

  2. 单击 "private" 一词。

    请注意,可视性一词以粗体字型显示。

  3. 按 CTRL+向下方向键。

    此时会打开一个下拉列表,其中显示了可以为可视性属性选择的值。

  4. 从下拉列表中选择一个新值,然后按 Enter 键。

    属性将被更新为新值。

    “注意”图标  您也可以直接在编辑器中键入新值。如果下拉列表中没有您需要的值,可以使用向左和向右方向键来定位光标,然后键入适当的值。


  5. 对于本教程,应使用值 private,然后按 Enter 键关闭编辑器。
返回页首

添加并定义其他的类

现在,您需要添加更多的类来完成一个简单的银行应用程序类图。添加类后,根据下面描述的内容并使用在本教程中学到的技术,对类进行标记并添加属性和操作。

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

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

  2. 单击鼠标右键以取消选择类图标。

    “注意”图标  可以选择并拖动新的类元素来安排它们的位置,如上图所示。这样您可以在图中清楚地看到每一个元素。

  3. 选择 EntryStation 元素下第一个未命名的类元素,将其命名为 ATM

  4. 当 ATM 类元素仍处于选定状态时,请根据下面的内容添加属性:

    private float cashOnHand;
                    
     
  5. 向 ATM 类中添加第二个属性,请根据下面的内容进行定义:

    private float dispensed;
                    
     

    这些属性会出现在类图和源代码中。使用“导航到源”选项可以显示 ATM.java 源文件。

    “注意”图标 

    向类中添加属性和操作时,类元素的大小会增加。要改善图的外观,您可以根据需要移动类元素,以便清楚地看到每个元素。执行此项操作时请小心,一定要选择类元素,而不要选择单个属性或操作。

     

  6. 返回到 "ClassDiagram" 标签,选择 ATM 元素下面的第一个类,将其命名为 Consortium

  7. 在 Consortium 类中添加操作。添加操作类似于添加属性。请右键单击“操作”一词。

  8. 键入 validateAccountInfo,然后按 Enter 键。

    此时 IDE 会创建一个新的操作,如下所示:

    public void validateAccountInfo();
                    
     
  9. 选择 ATM 类右侧的类元素,将其标记为 CashierStation

  10. 为此类添加两项操作,如下所示:

    public int verifyCard();
                    public float verifyAmountAvailable();
                    
     
  11. 标记其余的两个类元素,BranchUser

    User 类没有属性和操作。

  12. 为 Branch 类添加属性,如下所示:

    private char connected;
                    
     
返回页首

查找图元素

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

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

  • 在“项目”窗口中,双击 "EntryStation" 节点。
    此时,图编辑器中的 EntryStation 类元素将被选中并居中放置。

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

  1. 在图编辑器中选择 Consortium 类并单击右键。

  2. 从上下文菜单中选择“在项目树中查找元素”。

    此时,在“项目”窗口中将会突出显示目标项目的名称。

返回页首

描述类和图

您可以为类、属性、操作和图输入描述性文档。

使用 UML 文档窗口

  1. 在选中 EntryStation 类元素的情况下,在 UML“文档”窗口的文本框中单击一下鼠标。

  2. 键入 Describes the actions of the EntryStation class

  3. 单击 "EntryStation.java" 源编辑器标签。

    您会在源编辑器中看到所键入的文本。

使用属性窗口描述属性

  1. 单击 "ClassDiagram" 标签将焦点返回到图编辑器。

  2. 在“项目”窗口中,展开 "EntryStation" 节点。

  3. 选择标记为 private boolean isOperating 的属性节点。

    此属性的具体属性内容将出现在“UML 属性”窗口中。

  4. 在“属性”窗口中,单击“文档”行上的省略号 (...) 按钮。

    打开的定制编辑器应如下图所示:

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

  5. 键入文本 Maintains if EntryStation is operating,然后单击“确定”。

  6. 单击 "EntryStation.java" 源编辑器标签。

    您会在操作正上方的源代码中看到所键入的文本。

使用注释图标描述图

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

  1. 单击 "ClassDiagram" 标签返回到图编辑器。

  2. 从“建模组件面板”的“备注”类别选择“注释”图标 “注释”图标

  3. 单击 CashierStation 元素的右侧或正上方。

    这样会在图中放置一个“注释”元素。

  4. 单击鼠标右键以取消选择该图标。

  5. 选中注释元素时,键入 Cashier stations have limited funds 然后按 Enter 键。

    该文本将出现在“注释”元素中。

  6. 从“建模组件面板”的“备注”类别选择“链接注释”图标 “链接注释”图标

  7. 在 CashierStation 内单击鼠标,并再次单击“注释”元素。

    您会看到在注释元素和类元素之间出现一条链接。

  8. 对 Branch 类元素重复该步骤,在图中放置并链接第二个注释元素。

    请使用下列文本:A branch belongs to a Member Institution

      返回页首

      描述链接和关联

      关联用来描述一组共享通用结构和通用语义的链接。UML 建模功能不仅支持关联,而且还可以设置关联的多重性。多重性指定了一个类中有多少实例可以与关联类中的一个实例相关。多重性对相关组件的数量有所约束。本部分包含以下内容:

      描述类关联

      1. 从“建模组件面板”的“关联”类别选择“聚合”图标 “聚合”图标

      2. 在 ATM 元素内单击鼠标,然后单击 "Consortium" 元素。

        您会看到在这两个类之间绘制了一条链接。

      3. 单击鼠标右键以取消选择该图标。

        下图展示了由“项目”窗口体现的这两个类之间的关系。

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

      4. 选择 ATM 和 Consortium 之间的“聚合”链接。

        选中链接时,它的颜色会变为蓝色。

      5. 将光标放在靠近选定线条的中间位置,然后单击鼠标右键。

      6. 从上下文菜单中选择“标签”>“链接名称”。

      7. 在“名称”字段中键入 AccountVerification 并按 Enter 键。

        该链接的显示情况如下图所示。

        屏幕截图:带有“聚合”标签的链接

      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. 单击鼠标右键以取消选择“泛化”图标。

      7. 完成的图应如下图所示。

        屏幕截图:完成的类图

      返回页首

      创建依赖关系图

       

      利用 UML 建模功能,您可以创建一个显示类元所有依赖关系的图。依赖关系图中提供了以下关系类型:

      • 泛化
      • 关联
      • 实现
      • 带有给定类类型参数的操作
      1. 在“项目”窗口中,右键单击 "ATM" 节点。

      2. 从上下文菜单中选择“生成依赖关系图”。

        一个名为“ATM 依赖关系”的依赖关系图将在图编辑器中创建并打开,如下图所示。

        屏幕截图:依赖关系图

      保存图

       
      要保存图,请按照下列步骤执行操作:
      1. 完成图后,右键单击 "ClassDiagram" 标签。

      2. 从上下文菜单中选择“保存文档”。

        这将关闭菜单并保存类图。

      小结

       

      在本教程中,您了解了如何为简单的银行应用程序创建类图。具体学习了如何执行下列任务:

      • 设置双向工程
      • 创建类图
      • 使用“建模组件面板”上的图标向图中添加元素
      • 在类元素上添加并定义属性和操作
      • 描述图和图元素
      • 描述类元素之间的链接和关联
      • 创建依赖关系图
      • 保存图

      有关 Java Studio Enterprise UML 建模功能的详细信息,请参见 IDE 中的联机帮助,并访问 Java Studio Enterprise 开发者资源门户,获取有关 UML 建模的教程、视频以及其他资源。

      posted @ 2006-04-25 20:56  ahwey  阅读(686)  评论(0)    收藏  举报