UML 建模(6):创建序列图


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

本教程要求您首先完成 Java Studio Enterprise 8 的配套教程,即用 UMLTutorialProject 创建类图和协作图。在开始本序列图教程之前,请您首先完成“UML 建模:创建类图”和“UML 建模:创建协作图”这两个教程。您可以从 Sun Java Studio Enterprise 8 教程中找到这些教程。

在本教程中,您将了解如何使用 Sun Java Studio Enterprise 集成开发环境 (IDE) 的 UML 建模功能来创建 UML 序列图。序列图是一种对系统中协作对象组之间的交互关系的可视表示。序列图由称为生命线的竖线组成。每个生命线元素表示一个给定对象的生命。生命线通过水平线段相连,这些水平线段代表从脚本中的一个对象传输到下一个对象的消息。

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


目录

使用序列图

什么是序列图?

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

序列图具有以下用途:

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

创建序列图

本教程将用到在 Java Studio Enterprise 8 教程 UML 建模:创建类图中创建的类图以及在教程 UML 建模:创建协作图中创建的协作图。在开始执行以下步骤之前,您应当首先完成这些教程。

本部分包含以下内容:

生成序列图

  1. 如果需要,请启动 IDE。

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

  3. 右键单击 "CollaborationDiagram" 节点,然后从上下文菜单中选择“通过选定的元素创建图”。

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

    “注意”图标  您可以从上下文菜单列出的两类可用的交互图中选择一种类型:协作图和序列图。这些图主要强调对象之间的交互关系。

     

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

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

  6. 保留“名称空间”字段中的缺省设置,并单击“确定”。
    IDE 将执行以下操作:

    • CollaborationDiagram 节点下创建 SequenceDiagram 节点
    • 在图编辑器中显示新图,该图是由生命线元素以及来自协作图的消息构成的
    • 打开“建模组件面板”,显示在创建序列图过程中使用的图标。


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

    屏幕截图:生成的序列图

完善生成的序列图

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

  1. 选择标记为 User 的生命线,将其移至图的左侧。

  2. 重新排序其余的生命线元素,使其均匀地分布于图编辑器中。按以下顺序从左到右依次放置生命线:

    • User
    • ATM
    • Consortium
    • Branch


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

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

     

返回页首

添加自调用消息元素

自调用消息图元素表示调用对象时使用的消息。本图中表示的内部操作是对 ATM 对象中现有现金的验证。

  1. 您可能需要延长生命线元素,以方便消息元素的放置。要延长生命线,请按照下列步骤操作:

      a. 选择 User 生命线元素。

      b. 单击底部中心的蓝色方框,然后向下拖动方框以延长生命线。

      c. 重复步骤 a 和 b,延长其他的生命线,直至该图与下面的图类似。

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

     

  2. 从“建模组件面板”的“基本”类别,选择“自调用消息”图标 “自调用消息”图标

  3. 单击延长的 ATM 生命线元素的下半部分。

    IDE 将在此生命线上放置一个自调用消息元素。

  4. 单击鼠标右键以取消选择“自调用消息”图标。

  5. 在自调用消息元素中,单击位于下面的消息箭头。

    消息的属性将显示在“属性”窗口中。

  6. 在“属性”窗口的“名称”字段中,键入 validateCashOnHandOperation,然后按 Enter 键。

  7. 右键单击自调用消息元素中上面的消息箭头,然后从上下文菜单中选择“操作”。下图指示了放置光标的位置。请注意顶部箭头上方的双竖线。

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

  8. 从操作列表中选择 "public boolean getIsOperating"。

    您会看到对该消息的上部进行了标记,如下图所示。

    屏幕截图:带标签的自调用消息


返回页首

使用调用消息元素

由于 validateCashOnHand 操作是 ATM 类的一部分,因此需要在生命线上放置一个消息流来调用该操作。
  1. 从“建模组件面板”的“基本”类别,选择“同步消息”图标 “同步消息”图标

  2. 单击现有蓝条下的 User 生命线元素。

  3. 在您第一次单击位置的右侧再次直接单击 ATM 生命线元素。

    图上将出现一个消息和一个返回消息。

    “注意”图标  如果不希望返回消息出现在图上,请右键单击图编辑器的空白区域。从上下文菜单中取消选择“显示所有返回消息”。

  4. 右键单击刚刚创建的消息,从上下文菜单中选择“操作”>“添加操作”。

  5. 键入 validateCashOnHand,然后按 Enter 键。

    IDE 将在图上标记该消息,然后将消息作为操作添加到类图的 ATM 类中。在“项目”窗口中,展开 ATM 类节点,确认操作列表与下面的图类似。

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


返回页首

使用自动扩展消息选项

为了便于设计过程的顺利进行,IDE 有一个自动扩展消息的选项。如果将自动扩展设置为选中状态,则在图上放置新消息时,其占用的空间便会扩展为消息的宽度。
  1. 要设置自动扩展选项,请在 User 和 ATM 元素名称之间的跟踪中单击鼠标右键。

    打开上下文菜单。

  2. 选择“将宽度设置为消息宽度”。

    两个元素名称之间的跟踪中将会出现一个指示器栏,如下图所示。

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

  3. 重复上述步骤,设置 ATM 和 Consortium 元素之间以及 Consortium 和 Branch 元素之间的消息宽度选项。

返回页首

使用创建消息符号

 

“创建消息”符号可以创建生命线元素或实例。

  1. 从“建模组件面板”的“基本”类别,选择“创建消息”图标 “创建消息”图标

  2. 单击 Branch 生命线的下半部分。

    “注意”图标  请一定要单击在线上,否则将不能正确绘制链接。

  3. 绘制链接,直至 Branch 生命线的右侧,然后再次单击。

    这样便会在图上放置一个消息和一条生命线,如图所示。
    屏幕截图:添加了消息的 Branch 生命线

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

  5. 选择新的生命线。

    “属性”窗口将显示此生命线元素的属性。

  6. 在“属性”窗口中标记为“表示类元”的行上,单击向下箭头。

    将会出现一个下拉列表。

  7. 从下拉列表中选择 "CashierStation",然后按 Enter 键。

  8. 单击图编辑器,查看这个带有标签的生命线元素。

    “注意”图标  您可以适当放宽此新生命线元素,直至看到其完整的名称 CashierStation 为止。

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

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

返回页首

添加异步链接

 

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

  1. 从“建模组件面板”的“基本”类别,选择“异步消息”图标 “异步消息”图标

  2. 单击 Branch 生命线元素,然后单击 CashierStation 生命线元素,在 Branch 和 CashierStation 生命线之间绘制一条链接。

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

  4. 右键单击新链接,然后从上下文菜单中选择“操作”> "public int getStationID"。

    该操作将向此消息添加操作,如下图所示。

    屏幕截图:带有异步消息的序列图

返回页首

使用组合片段元素

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

  1. 从“建模面板”的“控制”类别,选择“组合片段”图标 “组合片段”图标

  2. 要绘制组合片段元素以封装消息 public void validateCashOnHand,请单击表示该消息的蓝色虚线矩形的外部,然后拉伸矩形,以围住该消息。

    切记在单击时不要选中任何生命线元素。您的组合片段应当如下图所示。

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

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

  4. 右键单击组合片段元素中的 "assert" 标签,然后选择“交互运算符”> "loop"。

    “注意”图标  loop 交互运算符指定组合片段表示一个循环。每次重复循环时,就会计算触发表达式的结果。触发表达式可以包括特定次数的循环迭代。

  5. 右键单击标记为 "loop" 的组合片段,然后从上下文菜单中选择“交互操作数”>“编辑交互约束”。

    IDE 会在目标组合片段元素中显示一个表达式框。

  6. 双击单词 expression,使表达式处于可编辑状态,如下图所示。

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

  7. 键入 x < 10,然后按 Enter 键。

  8. 单击图编辑器。

    这个表达式将被接受并显示在框中。该图应当与下面的图类似。

    屏幕截图:完成的序列图

返回页首

保存图

当您完成了序列图后,便可保存该图。

  1. 在图编辑器中,右键单击 "SequenceDiagram" 标签。

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

    这将关闭菜单并保存序列图。

    “注意”图标  退出 IDE 时,系统会提示您是否要保存该图。

返回页首

小结  

在本教程中,您了解了如何使用现有的类图和协作图来创建序列图。具体学习了如何执行下列任务:

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

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

posted @ 2006-04-25 19:12  ahwey  阅读(704)  评论(0)    收藏  举报