目录

  • 1 教学内容
    • 1.1 导言
    • 1.2 用例图
    • 1.3 对象图
    • 1.4 顺序图
    • 1.5 通讯图
    • 1.6 类图
    • 1.7 状态图
    • 1.8 活动图
    • 1.9 包图
    • 1.10 构件图
    • 1.11 部署图
    • 1.12 面向对象分析的uml模型
    • 1.13 面向对象设计的uml模型
  • 2 教学视频
    • 2.1 OOAD详解
    • 2.2 UML简介
    • 2.3 用例图
    • 2.4 类图1
    • 2.5 类图2
    • 2.6 类图3
    • 2.7 对象图
    • 2.8 组件图
    • 2.9 部署图
    • 2.10 时序图
    • 2.11 协作图
    • 2.12 状态图
    • 2.13 包
    • 2.14 使用UML分析十种设计模式
  • 3 软件设计师考试教程教学视频2
    • 3.1 UML建模前言
    • 3.2 UML图(用例图)
    • 3.3 UML图(类图)
    • 3.4 UML图(顺序图)
    • 3.5 UML图(活动图)
    • 3.6 UML图(状态图)
    • 3.7 UML图(通信图)
    • 3.8 UML案例分析
  • 4 实验
    • 4.1 实验一:用例图设计
    • 4.2 实验二:类图设计
    • 4.3 实验三:活动图设计
    • 4.4 实验四:顺序图设计
    • 4.5 实验五:协作图设计
    • 4.6 实验六:状态图设计
    • 4.7 实验七:物理图设计
  • 5 期末考核
    • 5.1 期末考试要求
  • 6 软件
    • 6.1 startuml
    • 6.2 rose
  • 7 课件
    • 7.1 第一章 导言
    • 7.2 第二章 用例图
    • 7.3 第三章 对象图
    • 7.4 第四章 顺序图
    • 7.5 第五章 通讯图
    • 7.6 第六章 类图
    • 7.7 第七章 状态图
    • 7.8 第八章 活动图
    • 7.9 第九章 包图
    • 7.10 第十章  构件图
    • 7.11 第十一章 部署图
顺序图

4.   1    基于交互的对象行为建模交互时的行为顺序 

用例实现( Use Case Realization) 的第步是发现用例中的对象 用例实现的第二步是确定所有对象的应有行为或责任为了确定每个对象的行为 ,首先要分析用例中对象之间的交互作用(Interaction)

PPS  ,用    UML(Sequence Diagram)如图 4-为    售员Salesmen系统SalesSystem订货后销关客、产, 对    Sales System:创建订货单详细信息提 交订货单



交互图( Interaction D ia g ra m ) 为基于交互的对象行为建 模U M L 用于描述对象之间信息 的交互过程的方法 是描述对象间协作关系的 模型交互图指出对象 如何通过 协作来完成用 例中捕获的业务流程。交互图中的对象可能代表是一个子系统一个构件或一个类的对象

        UML 两 种 表 达 形 式的 交 互 图: 顺 序 图( Seq ue nce Diag ra m ) 通 信 ( Co m mun ica t io n D i a g ra m ) 它们均可以完整地表达对象之间信息的交互过程 ,但是由于它们所采用的表达方式不同 ,它们的关注点有所不同如果按时间顺序对消息的交过程建模,则使用顺序圖 ,它展示的是按時間順序發生的消息 傳送。如果按對象關聯對消息的交互過程建模,則使用通信圖 ,通信圖強調的是消息交 互傳遞中對象之間的關聯。本章介紹的是顺序图,顺序图为交互时对象的行为顺序建模,第 5章将介绍通信图

4.2    顺  序  图

     顺序图用于捕系统运行中对象之间有顺序的交,强调的是消息交互的时间顺序顺序图描述了对象全部或部分系统功能的行为模型顺序图由命线和消息组成

4.3                顺序图的表示方法

 4.3.1          生命线

        每个参与者及系统运行中的对象都用条垂直的生命线( Lifeline ) 表示生命线展示了个对象在交互过程中的 生命期限 表示个对象 在系统表 现个功能时的 存在时间 UML用矩形框和虚线表示生命线,矩形框中添加生命线的名称,虚线展示与交互的 对象的生命长度 生命线的表示方 法如图 4- 2所示

在矩形框中添加生命线的描述标签,可以使用下面的语法,注意语法中的各个部  分都用斜体表示 说明它们都是可选的部分

object _ na me 是生命线对象的名字,由于同个类的对象 可以有不同的状态值, 所以有时需 要识别每个对象个体,这时可以在 se l e cto r 中标明Class _ name 说明了参与协作的对象的类型ref 是引用( Re fe rence ) 的英文缩写 ,deco mpos i tio n 也是个可选的部分,它指明在另个更详细的顺 序图中展示了当前交互的参与者如何处 理它所 接收到的消息的 细节下面给出生命 线的些示例

在图 4-3 中类名是 Sa le ,生命 线指的是 Sa le 的对象 ,但是没有给出具 体对象的名字,这里是用:C lass nam e的形式表达的

在图 4-4 中,指出 Sa le 的对象名字是 s l ,这里是按o bjec t _ na me: Class _ nam e的形式表达的

在图 4- 5 中,用 i 示一组S a le的对 象 中 第 i个对象。

在图 4- 6 中 ,re f C o m S a le 表示 C o m S a le 将 在其他的顺序图中给出详细描述

4.3.2      活动条

        在生命线的虚线上可以用活动条表示某种行为的开始和结束

活动条( A ct i va t io nBa r) 也称为执行发生( E xecut io n O cc urr e nce ) ,它 用 来表示对象的某个行为所处的执行状态活动条用小矩形条表示,图  4- 7   个带活动条的顺序图的例子但是,这里要强调的是在生命线上并非定要用活动条来表示执行的发    活动条的 加入使得执行发生更形象化,但是在行为繁多的顺序图中,活动条也使图 示更复杂 所以,在这种情况下,倾向不使用活动条

4.3.3      消息

 

          1.  什么是消息 

在面向对象的分析和设计中,对 象的行为也称为消息( M es s ag e ) ,因为对象之间行为的交互作用也可以看成是对象之间发送消息实现的通常,当 个对象调用另个对象中的行为时,即完成了次消息传递由于顺序图强调的是对象行为的发生顺,所以 ,也可以说是消息发生的时间顺序

顺序图关注生命线间的通信这些通信就是对象发送的消息UML用生命线间带有实心箭头的实线表示消息每条 消息从发送对象指向接收对象如图 4-7getTotalPaymentgetPrice都是简单地表达消息的例子

顺序图帮助发现系统中应该有多少个对象以及每个消息应该屈于哪个对象在    4-7中 ,对象 anO rder向类 Product的对象发送了消息 getPrice,消 息 g etPrice属 于Product的对象同样消息 getTota!Payment为对象 anOrde所有并在消息gctTotalP ayment对象 anOrder调用了 Product的对象的消息 getPrice下面的程序说明了这个问 题

 

 

2 . 消息的 命名 

个消息都必须命 名在表达消息 的箭头上,放置表示 消息名称的标签,其语法如下:

attribute  发送消这些属性可能是发送消息的对象的某个属性、参与交互的全局属性或者参与交互的类的实例的      属signal_or_   message_na me消息para meterparameterType是这个parameter:parame terType各参数间用号相return_value4-1  述语

    

         3. 简单消息同步消息和异步消息 

消息分为简单消息(Si mpl e M essa ge ) 步消息 (Synchro nous  Mess age) 和异消息( As ynch ro no us Mes sag e)

单消息只表示控制如何从个对象发给另个对象 并  包含控制的细节步意味着塞和等待如果 对A 向对象 B 发送个消息 对象 A 发出消息后必须等待消息返有当对象 B 处理 消息的操作执行完毕后对象 A 可继执行自的操作这样的消息称为同步消异步意味着非如果对象 A 向 对 象 B 发送个消息,对象 A  不必等待对象 B 执行完这个消息就可以继续执行自己的下个行这样的消息称为异步消息

UML 用实体箭头表示同步消息,称 为 Fi I led A rro w ,图 4- 7 ge tT o ta l P aymentget P ri ce步消息

用开放式箭头表示异步消息,称为 Open A rro w , 4-se tP rice  就是个异步消息

          4.  对象创建消息 

参与交互的对象不必在整个顺序图交互完整周期中直存在以根据需要,    通过发送消息来创建 和销毁它们创建对象的消息被称为对象建消息 Object CreationMessage) 表示对象在交互过程中被通过构造<< create > 来表示。

       图 4 - 9 建用户新账户的例子。


下例为图 4- 9 对应的段简单的 J a va 代码

也 可用如图 4-10 所示的方法来表示建对象消息,消息箭头接指向被对象线的头部这样就不需要图 4- 9 中的构造型< < cr ea t e >

      5.对象销毁消息 

个对象可以通过对象销毁消息( ObjectDestructionMessage ) 销毁另个对象当然,它 可以销毁它本UML将构造型< < destroy> 为消息的标签来表达对象销毁消息 ,同时在对象生 命线的结束部分画X 来表示该对象被销毁了4-11 是一个对象 销毁消息的例子

J ava 中,使用垃圾 回收机制来处 理对象的 销毁



       6.  无触发 对象和无接收对象消息 

无触发对象消息称为 fo u n d m e s s a g e 用活动 条开始 端点上的实心球加箭头来表示,它表示消息的发送者没有被详细指明 ,或者是个未知的发送者,或者该 消息来自个随机的消息源

无接收对象 消息称为 lo s t m e s s a g e 用箭头加实心球来表示它描述消息的接收者没有被详 细指明 或者是 个未知的接收者或者该 消息在某时刻未被收到

这两类 消息的例子如图 4-1 2 所示

        7 . 自我调用消息

自我调用消息表示消息从个对象发送到它本身,可以通过活动条的嵌套来表示   自我调用消息 ( CallSelfMessage ) 4-13 中 ,消息 getDiscount就是个自我调用消息的例子

    8.控制信息 

下面两种情况可以应用控制信息( Co nt rol I nfo rm a t io n) 表达

(1 ) 条件( Co nditio n) 仅当条件为真的时候消息才被发送。其语法为

其中,条件表达式放置在[ express io n] 。图 4-13 ,消息[ price> 100] getDisco unt()

就是表达条件的控制消息的例子

(2 ) 迭代 Cl tera tio n ) 为了接收多次对象消息被发送多次。其语法为:

* 表示这是个迭代迭代条件放在[ express io n] 4-1 4 给出了这种类型的控制消息的例子,它 表 H uma n Reso ur ce 将 反复Sal e De par tment 发送消息addSa l es man 直 到条件表达式 u nt il f u ll

      9.消息的返回值 

消息的返回值( R e t u rn V a l ue ) 可以用虚线加开箭头的形式表示有两种方法来表个消息的返回值

但是很多情况下 人们习惯省略消息的返回值


4.3.4     交互框

       UML  2.顺序图中加了交互框( I n te ract io n   F ra m e ) 。 交互框指图中块区域( R eg io n )  或片段 ( F ra g m e n t )     ,  F ra m es  包含个操作符 ( O pe ra to r ) 或称标签C L a be l ) ,并 个警戒( G ua rd ) 4- 2 是关于 F ra m e 作符的说明

下面举例说明主要的交互片段 

    1.  alt 

操作符 a lt 的 例 子如图 4-16所示

如图 4- 16 所示的顺序图可以这样理解

(l)  消息getPrice  SaleManagement后根据q uantity

( 2  )  如果 q ua n t it y 的值小千 M i ni A m o u nt 那么 S a le M a nag e m e n t  将向 R etail  送消息 g e tP r i ce

3)   Sa leManagement将向 WholeSale发送消息 getP rice



2 . loop 

Frame 操作符loo p 如图 4-1 7 所示

如图 4- 1 7 的顺序图可以这样理解:

l ) 消息 g e t P ro d u c t s 被发送给实例O rde r , O rd e r 判断 I 的 值 是 否 n

( 2 ) 当表达式 n 的值为的时候O rd er 向实例 P ro duc t M g t 发送消息

g e t P r o d u c t Na m e g e t Product D a ta


3.   opt 

F r a m e 作符 o pt 的例子如图 4-18 示。

如图 4-18所示的顺序图可以这样理解表达式 inventory- order' snumber < = productLevel的 值 的 时 候,对 象 ProducePlanMgt分 别 向ProducePlan

: S to ra g e 发送消息 s e t P ro d uct s e t P ro d uct Num be r 

4.  par 

F ra m e 操作符 p a r 的例子如图 4-19 所示

4-19 的顺序图可以理解为 sa ve Us e rDat a( ) chec kQ ualif i c a t io n()将并行执行


4.3                             案 例 分 析

 

现在巳经掌握了顺序图中的基本 UML 元素,是时 候 看 看 如何 应用顺序图表示用例中对象的交互了PPS 项目中创建生计划单用例为例用例创建生产计划单的主要场景如表4-3 所示

经过分析 在用例建生产计 划单中,不 难 发现对象生产计划单、订货 单、产品和库存这些对象是如何协作实现用例的呢?图 4 - 20 是为这个用例建的顺序图

从上面的例子中可以看出,顺 序图将交互关系表维图从上到下体现了时间顺序轴从左到右代表了参与交互的对象

4.  5    总    结 

介绍了 交互图顺序图,详 细说明 了制顺序图的目的和顺序图的制方法并以创建生产计划单为例给出了用例创建生产计划单的顺序图BoochRumbaughJacobsonThUnified ModelinLanguagUser Guide中指出了顺序图的绘制策略,总结起来,这些策略包括:

(1 ) 先确定交互发生的语境即交互 是发生在系 统中、子系统中、操作中、类中还用例或协作中

           (2 ) 通过识别对象在交互 中扮演的 角色设置交互 的场景,将这些 对象从左到右地放在顺 序图的 上方 ,较重要的 对象放 在左边,与它们关联的其他对象 放在右边

( 3 ) 在适当的时刻为个对象设置生命线,多 数情况下 对象存在于整个交互程中,对千那些在交互期间创建和撤销的对象,用适当的构造型显示指明它们的创建  和销毁

( 4 ) 从引发交互 的消息开始在生命线之间自上 而下 画出依次展开的消息 显示每个消息的特性如消息的,如果需要解释交互 的语义

( 5) 如果要可视化消息的嵌,或可视化实际计算发生时的时间点,则用激活条修饰每个对象的 生命线

         (6)     如果要更形式化地说明控制可以为消息附上前或后置条

个简单的系统建模使用顺 序图的控制机制就足够了但当给复杂的场( Sce na rio ) 建模则需要多个顺序图另外顺序图 不适于为个详细的算法建模 这种情况更 好的方法是使 用活动图 和状态图