FeaturesPluginsDocs & SupportCommunityPartners

UML:创建序列图

在本教程中,您将了解如何使用 IDE 的 UML 功能来创建 UML 序列图。序列图是针对系统中协作对象组之间的交互关系的一种可视表示。序列图由称为生命线的垂直线条组成。每个生命线元素表示一个给定对象的生命周期。生命线通过水平线条相连,这些水平线条表示从方案中的一个对象传输至下一个对象的消息。.

预计时间:30 分钟

教程需求

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

前提条件

本教程假定您已完成关于使用 UMLTutorialProject 创建类图和协作图的教程。在使用本教程之前已完成 UML:创建类图UML: 创建协作图

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

本教程所需要的软件

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

回到顶部

使用序列图

序列图是一个模型,用于描述对象组如何随着时间的推移在某些行为方面进行协作。序列图捕获单个用例的行为,显示特定用例的时间框架中的对象以及这些对象之间传递的消息。序列图并不显示对象之间的关系。

序列图具有以下用途:

  • 当不同的类中存在多个简短的方法时,描述控制流的整个序列
  • 显示并发进程和激活
  • 显示在协作图中难以描绘的时间序列
  • 显示涉及类交互而与对象无关的一般形式

回到顶部


创建序列图

本教程将使用 UML 建模:创建类图 教程中创建的类图,和 UML 建模:创建协作图 教程中创建的协作图。本部分包含以下步骤:

本节包含以下主题:

回到顶部


生成序列图

  1. 启动 IDE(如果需要)。
  2. 在“项目”窗口中,右键单击 "UMLTutorialProject" >“模型”> "CollaborationDiagram" 节点,然后从弹出菜单中选择“通过选定的元素创建图”。
    将打开新建向导,并显示“创建新图”页。

    注意:您可以从弹出菜单列出的两类交互图(协作图和序列图)中选择一种类型。这些图着重描述对象之间的交互关系。
  3. 在“图类型”列表中,选择“序列图”。
  4. 在“图名称”字段中,键入 SequenceDiagram
  5. 保留“名称空间”字段中的默认设置,然后单击“完成”。
    IDE 将执行以下操作:
    • 在“项目”窗口的 "CollaborationDiagram" 节点下创建 SequenceDiagram 节点
    • 在图编辑器中显示新图(该图由来自协作图的生命线元素和消息构成)
    • 打开建模组件面板,并显示在创建序列图过程中使用的图标
    此时,您的图应如下所示:

    屏幕截图:生成的序列图

回到顶部


细化生成的图

事务中的对象会被绘制成点状垂直线条,其名称显示在顶部。由于在创建序列图时无法预定义生命线元素的顺序,因此您需要在此时对它们进行重新排序。

  1. 选择标记为 User 的生命线,然后将其移至图的左侧。
  2. 对其余的生命线元素进行重新排序,使其均匀地分布于图编辑器中。请按以下顺序从左到右依放置生命线:
    • User
    • ATM
    • Consortium
    • Branch

    现在,该图应当与下面的图类似。

    屏幕截图:对生命线元素进行重新排序后的序列图

回到顶部


添加自调用消息元素

自调用消息图元素表示为调用对象提供的消息。本图所表示的内部操作是在 ATM 对象中验证目前具有的现金数额。

  1. 您可能需要延长生命线元素,以便放置消息元素。
    要延长生命线,请按照下列步骤操作:
    1. 选择 User 生命线元素。
    2. 单击底部中心的蓝色框,然后向下拖动该框以延长生命线。
    3. 重复执行步骤 a 和 b 以延长其余的生命线,直至序列图与下面的图类似。

      屏幕截图:延长了生命线的序列图

  2. 从建模组件面板的“基本”类别中,选择 "Message To Self" 图标  "Message To Self" 图标
  3. 单击延长的 ATM 生命线元素的下面部分。
    IDE 将在此生命线上放置一个自调用消息元素。
  4. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Message To Self" 图标。
  5. 在自调用消息元素中,单击位于下面的消息箭头。
    属性窗口中将显示该消息的属性。
  6. 在属性窗口的“名称”字段中,键入 validateCashOnHandOperation,然后按回车键。
  7. 右键单击自调用消息元素中位于上面的消息箭头,然后从弹出菜单中选择“操作”。下图指示了放置光标的位置。请注意位于顶部箭头上方的双横线。

    屏幕截图:自调用消息中的光标放置

  8. 从弹出菜单中选择“操作”>“添加操作”。
    此时将打开一个只有一行的编辑器,其中显示了以下信息:
    可视性 returnType 名称(参数) {属性, ...}
  9. 按照如下所示定义操作:
    public boolean getIsOperating()
    您会看到该消息的上部进行了标记,如下图所示。

    屏幕截图:带有选项卡的自调用消息

回到顶部


使用调用消息元素

由于 validateCashOnHand 操作是 ATM 类的一部分,因此需要在生命线上放置一个消息流来调用该操作。

  1. 从建模组件面板的“基本”类别中,选择 "Synchronous Message" 图标 "Synchronous Message" 图标
  2. 单击紧靠 getCashOnHand() 消息下面的 User 生命线元素。
  3. 在您第一次单击位置右侧的 ATM 生命线元素上再次单击鼠标左键。图中将显示一个消息和一个返回消息,如下图所示。
    新同步消息的图像。注意:果不希望图中显示返回消息,请在图编辑器的空白区域单击鼠标右键,然后从弹出菜单中取消选择“显示所有返回消息”。
  4. 在图编辑器中的任意位置单击鼠标右键以取消选择该图标。
  5. 右键单击刚创建的消息,然后从弹出菜单中选择“操作”>“添加操作”。
  6. 键入 validateCashOnHand,然后按回车键。
    IDE 将在图中标记该消息,并将其作为操作添加到类图的 ATM 类中。在“项目”窗口中,展开 "ATM" 类节点,确认操作列表与下图所示的内容类似。

    屏幕截图:“项目”窗口中展开的 ATM 类

回到顶部


使用自动扩展消息选项

为了便于设计过程的顺利进行,IDE 提供了一个自动扩展消息的选项。如果将自动扩展设置为选定状态,则在图中放置新消息时,其占用的空间便会扩展为消息的宽度。

  1. 在位于生命线元素上方的灰色标题区域中,右键单击 User 和 ATM 元素名称之间的区域,以设置自动扩展选项。
    将打开一个弹出菜单。
  2. 选择“将宽度设置为消息宽度”。
    两个元素名称之间的跟踪栏中将显示一个指示器,如下图所示。

    屏幕截图:选定“将宽度设置为消息宽度”选项序列图

  3. 重复执行以上步骤,在 ATM 和 Consortium 元素以及 Consortium 和 Branch 元素之间设置消息宽度选项。返回页首

回到顶部


使用 "Create Message" 图标

通过使用 "Create Message" 图标,可以创建生命线元素或实例。

  1. 从建模组件面板的“基本”类别中,选择 "Create Message" 图标 "Create Message" 图标
  2. 单击 Branch 生命线的下面部分。
  3. 向 Branch 生命线的右侧绘制链接,然后再次单击鼠标左键。
    图将放置一个消息和一条生命线,如下图所示。

    屏幕截图:添加了消息的 Branch 生命线

  4. 按下 ESC 键取消选中图标。
  5. 选择新的生命线。
    属性窗口将显示此生命线元素的属性。
  6. 在属性窗口的“表示类元”行中,单击向下方向键。
    将显示一个下拉列表。
  7. 从下拉列表中选择 "CashierStation",然后按回车键。
  8. 在图编辑器中单击鼠标左键以查看此带有选项卡的生命线元素。

    您的图应当与下面的图类似。

    屏幕截图:具有生命线的序列图

回到顶部

添加异步链接

异步消息元素表示不阻止调用对象的消息。此类消息能够创建新对象、创建新线程以及与现有线程进行通信。

  1. 从建模组件面板的“基本”类别中,选择 "Asynchronous Message" 图标 "Asynchronous Message" 图标
  2. 通过执行以下操作在 Branch 和 CashierStation 生命线之间绘制一条链接:单击 Branch 生命线元素,然后再单击 CashierStation 生命线元素。
  3. 按下 ESC 键取消选中图标。
  4. 右键单击新链接,然后从弹出菜单中选择“操作”> "public int getStationID"。
    这将在此消息中添加操作,如下图所示。

    屏幕截图:包含异步消息的序列图

回到顶部

使用组合片段元素

组合片段允许在序列图中直接表示逻辑组件,如备选项、选项、异常、并行合并、循环、求反、临界区域和谓语等。组合片段提供了一种方法,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。

  1. 从建模组件面板的“控制”类别中,选择 "Combined Fragment" 图标 "Combined Fragment" 图标
  2. 要绘制组合片段元素以封装消息 public void validateCashOnHand,请在表示该消息的蓝色虚线矩形的外部单击鼠标左键,然后单击并拖动矩形以围住该消息。
    请切记:在单击鼠标左键时不要选定任何生命线元素。该组合片段应如下图所示。

    屏幕截图:围绕消息放置的组合片段

  3. 按下 ESC 键取消选中图标。
  4. 右键单击组合片段元素中的 assert 选项卡,然后选择“交互运算符”> "loop"。

    注意:loop 交互运算符会指定组合片段表示为一个循环。每次重复循环时,将计算触发表达式的结果。触发表达式可以包括特定次数的循环迭代。
  5. 右键单击组合片段的选项卡 "loop",然后从弹出菜单中选“交互操作数”>“编辑交互约束”。
    IDE 将在目标组合片段元素中显示一个表达式框。
  6. 双击 expression 一词,使表达式框处于可编辑状态,如下图所示。

    屏幕截图:消息中的可编辑表达式框

  7. 键入 x < 10,然后按回车键。
  8. 在图编辑器中单击鼠标左键。
    将接受并在框中显示此表达式。此时,您的图应如下所示:

    屏幕截图:完成的序列图

回到顶部


保存图

完成序列图后,您可以保存该图。

  1. 在图编辑器中,右键单击 "SequenceDiagram" 选项卡。
  2. 从弹出菜单中选择“保存文档”。
    将关闭该菜单并保存图。

    注意:退出 IDE 时,系统还会提示您是否要保存图。

回到顶部

结束语

在本教程中,您了解了如何使用现有的协作图来创建序列图。我们已经学习了如何执行以下任务:

  • 通过现有的协作图生成序列图
  • 使用建模组件面板中的图标向图中添加消息
  • 向图中添加链接
  • 添加组合片段元素
  • 保存图

回到顶部

未来计划

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



回到顶部

>> 更多 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