UML软件工程组织

UML 建模:创建序列图

 

2007-12-07 来源:gceclub.sun.com.cn

 

本教程适用于 Sun Java Studio Enterprise 8 和 8.1 版本。

本教程要求您首先完成其配套教程,即使用 UMLTutorialProject 创建类图和协作图。因此,在学习本序列图教程之前,请首先完成 UML 建模:创建类图以及 UML 建模:创建协作图。

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

要使用本教程,您必须在系统中安装 Java Studio Enterprise IDE,并且应该熟悉 IDE 的基本组成部分。同时,还应该对 Java 编程语言和 UML 建模有基本的了解。要了解 Java Studio Enterprise IDE 的基础知识,请参见联机帮助中的“IDE 基础知识”主题。

目录

使用序列图

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

序列图具有以下用途:

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

 

创建序列图

本教程将使用 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,然后按 Enter 键。
  7. 右键单击自调用消息元素中上面的消息箭头,然后从弹出式菜单中选择“操作”。下图指示了放置光标的位置。请注意位于顶部箭头上方的双横线。

    屏幕截图:自调用消息中的光标放置
  8. 从弹出式菜单中选择“操作”>“添加操作”。
    将打开一个单行编辑器,并显示以下信息:
    可视性 returnType 名称(参数) {属性, ...}
    
  9. 按照如下所示定义操作:
    public boolean getIsOperating
    

    消息的上面部分将被标记为下图所示的内容。

    屏幕截图:带有标签的自调用消息
返回页首

 

使用调用消息元素

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

  1. 从建模组件面板的“基本”类别中,选择 "Synchronous Message" 图标 "Synchronous Message" 图标
  2. 在 User 生命线元素(标记为 :User)的现有蓝条下面单击鼠标左键。
  3. 在您第一次单击位置右侧的 ATM 生命线元素上再次单击鼠标左键。
    图中将显示一个消息和一个返回消息。
    注意:  如果不希望图中显示返回消息,请在图编辑器的空白区域单击鼠标右键,然后从弹出式菜单中取消选择“显示所有返回消息”。
  4. 在图编辑器中的任意位置单击鼠标右键以取消选择 "Synchronous Message" 图标。
  5. 右键单击刚创建的消息,然后从弹出式菜单中选择“操作”>“添加操作”。
  6. 键入 validateCashOnHand,然后按 Enter 键。
    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",然后按 Enter 键。
  8. 在图编辑器中单击鼠标左键以查看此带有标签的生命线元素。
     
    注意:  您可以适当放宽新的生命线元素,直至看到其完整的名称 CashierStation 为止。
    此时,序列图应当与下面的图类似。

    屏幕截图:包含新生命线的序列图
返回页首

 

添加异步链接

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

  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,然后按 Enter 键。
  8. 在图编辑器中单击鼠标左键。
    将接受并在框中显示此表达式。此时,序列图应当与下面的图类似。

    屏幕截图:完成的序列图
返回页首

 

保存图

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

  1. 在图编辑器中,右键单击 "SequenceDiagram" 标签。
  2. 从弹出式菜单中选择“保存文档”。
    将关闭菜单并保存图。
     
    注意:  退出 IDE 时,系统也会提示您是否要保存图。
返回页首
 

小结

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

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

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

返回页首