230 likes | 458 Views
Lecture 4-5 UML 建模 UML 时序通信与概览图. 动态模型. 状态图:通常是一个对象的状态 UML 中用时序图、通信图、活动图和状态机图来建立动态模型。 显示对象在系统运行期间不同时刻的 各对象的动态交互。. 1. 时序图. 时序图用来描述 对象间的交互行为 ,它关注于消息的顺序,即对象间消息的发送和接收的顺序。 时序图还揭示了 一个特定场景的交互 ,即系统执行期间发生在某时间点的对象之间的特定交互。它适合于描述实时系统中的时间特性和时间约束。 实例形式 :描述一次具体的交互历史 一般形式: 描述一个交互场景中所有可能的交互序列 ( 可能带条件和分支).
E N D
动态模型 • 状态图:通常是一个对象的状态 • UML中用时序图、通信图、活动图和状态机图来建立动态模型。 • 显示对象在系统运行期间不同时刻的各对象的动态交互。
1. 时序图 • 时序图用来描述对象间的交互行为,它关注于消息的顺序,即对象间消息的发送和接收的顺序。 • 时序图还揭示了一个特定场景的交互,即系统执行期间发生在某时间点的对象之间的特定交互。它适合于描述实时系统中的时间特性和时间约束。 • 实例形式:描述一次具体的交互历史 • 一般形式:描述一个交互场景中所有可能的交互序列 ( 可能带条件和分支)
生存线:时序图中对象框下可画一垂直的虚线,称为该对象的生存线(lifeline),显示执行期间的时序。生存线:时序图中对象框下可画一垂直的虚线,称为该对象的生存线(lifeline),显示执行期间的时序。 • 消息发送:用来指出该对象对象之间的消息发送用生存线之间的消息箭头表示。 • 激活:当一个对象接收到一个消息时,该对象开始活动,称为激活。激活画成对象生存线上的一个长方形框,表示该对象可能在执行自己的代码,可能在等待另一对象的返回。 • 作用:按垂直坐标从上到下的次序读时序图,可以发现随时间推进,对象间消息通信的顺序与功能执行。
呼叫方 应叫方 电话线 呼叫方拿起受话器 拨号音开始 拨数字(5) 拨号音结束 实例形式 拨数字(5) 拨数字(2) 拨数字(7) 拨数字(2) 电话振铃 铃声 应叫方摘机 铃声消失 停止振铃 电话接通 电话接通 户叫方挂机 电话被切断 电话被切断 应叫方挂机
A B:myB 生命线 doOne 激活区 doTwo doThree public class A { private B myB=new B( ); public void doOne( ) { myB.doTwo( ); myB.doThree( ); } }
在时序图中,不同的消息表示对象间不同类型的通信。在时序图中,不同的消息表示对象间不同类型的通信。 • 简单消息:表示消息类型未知或与类型无关,或是一个同步消息的返回。 • 同步消息:表示发送对象必须等接收对象完成消息的处理后才能继续执行。 • 异步消息:表示发送对象在消息发送后立即继续执行,而不必等待接收对象的返回。 • 传送延迟:可用倾斜的箭头表示,意思是消息发送后需经历一段延迟时间才被接收(可以注明最大延迟时间)。
:clockStarter Log:logger 对象创建消息 主动对象:拥有独立的运行线程或进程 startclock create 异步消息 run 同步消息 saveLog(desp, time) 返回消息 committed
:Sales :Payment 一个对象可以通过一条消息创建另一个对象。 当需要显式地表示对象的销毁(没有垃圾自动回收机制或特别指明不再使用)时,在图中用一个X号表示。 创建或消亡一个对象的消息通常是同步消息 Create(cash) <<Destroy>>
OP1() A: A1 B:b1 C:c1 OP2() OP3() 时序图中还可出现递归,即一个对象发消息给自身,这种消息通常是同步
UML2.0中的带条件消息 :Foo :Bar xx [color=red] opt calculate yy alt:互斥的有条件交互消息 alt [x>0] calculate else calculate
sd authen user :B :C :A :B :C Op1 do X op2 do A do B p3 authe(id) ref Authen user ref Sd do foo do foo :B :C 被引用的交互片断具有一样的生命线 准则:任何时序图 op4 op5
时序图中的循环 :A :B [make new sale] loop [more items] [enteritem(item, quantity) loop标记后还可以包含循环次数的限制 Description, total endsale
时序图的结构化控制结构 • 前面的时序图中描述的都是顺序的控制流,对于复杂的控制流可以用组合片段 (combined fragment)来表示。 • 组合片段:有一个关键字和一或多个子片段( subfragment),关键字指明操作符,子片段指出操作对象。下表给出了部分关键字及其含义。
时序图中的并行和嵌套 Bank: ATM User: Person Loop(1,3) [invalid pass] enter(password) Valid=verify(password) opt [valid pass] par [valid pass] Enter(account) Enter(ammount) Deliver cash 并行区域中,同一分区内的消息顺序执行,不同分区之间的 消息次序是任意的
通信图(协作图) • 通信图communication diagram,与1.X版本中的协作图collaboration diagram 相同
通信图(协作图) • 通信图:对象间的交互和链接(一个link是关联的一个实例)。Link可以带上消息 • 消息:同顺序图 • 链:两个对象之间的连接。 • 链上可附加上消息 • 在链的末端可附加上约束:如global, local, parameter,self(对象可以向自身发送消息) • 例1. 工作申请协作图
交互概览图interaction overview diagram • UML2.0新增,结合了时序图中的控制流与活动图的交互特征。 • 关注控制流,但抽象掉了时序图中的消息和生命线的视图。 • 使用活动图的表示法,其中的节点不是活动,而是UML的各种交互图(时序、通信、时间及交互概述图)