26UML交互图顺序图和协作61顺序图概念与表示
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
destroy
setValues (a”CO”)
顺序图和协作图表示相同的模型语义,可以把顺序图和 协作图从一种形式转换为另一种形式。
11
协作图与顺序图的异同
协作图可以表示链,而顺序图中不显式地表明对 象间的链。
协作图有消息顺序号,而顺序图的顺序是以消息 的物理顺序表示的。
协作图可标注像<<transient>>这样的标记,而顺序 图不显示这些。
14
• 状态图的作用:
确定状态属性的范围;确定对象上的操作,包括接受的 必要请求和响应请求执行的必要活动,以及保持常态的必 要行为。
• 状态图表述的内容:
1) 对象具有的稳定状态; 2) 保持稳定状态的动作行为; 3) 状态转换的触发事件; 4) 状态改变时发生的动作; 5) 必要时表明对象的创建和消亡。
after(15 seconds)/selfTest
Initializing 初始化状态
Idle 空闲状态
时间事件
attention
clearing
clearing
alarm(s)
Command 处理命令状态
attention
Active 处理警报状态
22
• 例2--字符流分析器类状态图:
字符流形式为:x…x <xx…x> xx..x ; 要求分析出< >中的符号,以及;号前的主句
1..1
1..m
显示窗口 功能键
1..1 包含↓
0..k
警报器
1..1 包含↓
0..k
电话
1..1 有↓
0..n
传感器事件
8
SafeHome关闭系统用况顺序图
:控制台
:系统
:传感器
输入password ( )
请求验证密码( )
密码验证( )
启动鸣响( )
关闭系统( )
显示可关闭系统(nterface
ATM
verity Status deposit Status disppoense cash print AccntStar read CardInfo getCashAmnt
2.1:verify accnt 2.2:verity PIN 2.3verity policy 3.1:with drawReq 4.1:deppositReq 4.2:acctInfoReq
协作图不能表示消息的返回,而顺序图可以准确 表示。
协作图对迭代和分支消息等较复杂的控制流,与 顺序图一样都可以表示。
12
2.6.4 协作图的用途
• 分析对象行为的控制线程,规划系统分布及测试用例。
• 实例:用协作图规划储蓄应用的行为
ATM
1:card inserted 2:password deposit 3:withdraw 4:accntStatus 5:terminate
t:Transaction 2.1:setValues(d,3.4)
p:ODBCProxy
2.2:setValues(a”CO”) 消息
10
与前页协作图在语义上等价的顺序图:
c:Client
p:ODBCProxy
create setAction(a,d,o)
t:Transaction
setValues(d,3.4)
传感器配置
《extend》
《extend》 电话号码设置
房主
启动系统
《include》
密码设置
《include》 密码验证
关闭系统 查看传感器状况
《include》
《include》 传感器监测
传感器事件恢复
传感器 报警器
显示窗
电话
7
Safehome系统类图
控制台
包含
1..1
1..1
系统
包含→
传感器
1)entry/动作表达式---进入状态时执行该动作 2)exit/动作表达式---退出状态时执行该动作 3)do/活动---在状态整个阶段执行的动作集合
20
状态例: “打印服务器”输入口令的状态
EnterPassword entry/password.reset() exit/password.test() digit/handle character() clear/password.reset() help/display help print/defer do/suppress echo
区间,若两个对象的操作执行属于同一控制线程,则接收 者操作的执行应在发送者发出消息之后开始,并在发送者 结束之前结束; Step7 描述对象执行的操作功能、时间、范围约束; Step8 可显式地表示消息的迭代或分支。
6
建立顺序图实例:Safehome
Safehome系统用况图
系统配置
《extend》
c:*拨号{时间<30秒}
迭代
连接
接通线路
创建 :会话
阵铃
连接s与r
拿起话筒 连接
使用 约束 指示 时间 间隔
<1秒
5
2.6.2 建立顺序图
Step1 根据具体用况中的对象或参与者的交互语境,设置交互; Step2 在顺序图上部列出所选的一组对象或参与者; Step3 为每个对象和参与者设置生命线。 Step4 用消息箭线显式地标出交互中将被创建和撤消的对象; Step5 在对象之间,标出消息进行传递的序列; Step6 在对象生命线上,按对象操作的次序,排列各操作的激活
烹饪中断 entry/关功率管 entry/清除计时器
按按钮 开门
延长烹饪 entry/计时器增1
按按钮 定时器时间到
初始烹饪
entry/设置计时器 entry/开功率管 entry/开灯
只有一个按钮的简易微波炉,按一下按钮开始工作,工作 时间为一分钟,工作期间,每按一次按钮计时器增加一分 钟工作时间.
• 状态图的两个要点:
– 状态转换的原子性(不可间断性) – 针对有明确生命阶段的复杂行为对象建立状态图
15
2.6.1 状态图的概念与表示
1. 事件定义 : 事件是对一个可观察的事情的类 型描述,这种事情的发生可以引发状态的转换。
• 事件的种类: 1)信号事件---显式接收的,直接响应的事件 2)调用事件---操作调用引发的,间接由动作引
Bank
2.1.1:valid accnt 2.2.1:valid PIN
2:open accnt 3:initialDeposit 1:authorizeCard 4:deauthorize 5:close accnt
4.1.1:deposit 4.2.1:creditLimit 4.2.2:accntType 4.2.3:balance 4.2.4:withdraw 4.2.5:deposit close
关闭传感器( ) 停止传感器( )
传感器指示灯熄灭( )
关闭工作就绪( ) 绿灯灭红灯亮( )
系统停止( )
9
2.6.3 协作图(Collaboration)
协作图表示在协同完成某行为时对象之间的交互, 强调对象的消息结构,而忽略时间顺序。
• 协作图例
c:Client 链
对象 1:create 2:setAction(a,d,o) 3:destroy
发的事件 3)时间事件---某时间段后发生的,由“after”
和时间量表达式表示 4)改变事件--- 满足某条件产生的,用“when”
和布尔表达式表示
16
• 信号事件可以继承:
指定一个信号事件为另一个信号的子类,意味 着该信号将导致自身以及父信号事件所引发的状 态转换。
• 信号事件继承表示:
<<signal>> abc
实箭线“
”同步过程,需要等待回应,会有嵌套控制
枝状箭线“ 行
”异步通信,发出消息后不必等待,继续执
虚的枝状箭线“
”显式表示回应返回
4
顺序图例:打电话
s:打电话的人
:交换机
r:打电话的人
{b.receive Time-a.send Time<1秒}
a:拿起话筒
设置标记,显式地表 示时间差的数值
b:发拨号声
拨号(n) [有效]/连接
连接
占线 do/放忙音
占线
对方应答 对方暂停 对方应答/通话生效
通话
响铃 do/放铃声
24
• 例4--简易微波炉状态图:
烹饪完成
entry/关灯 entry/关功率管 entry/发滴滴声
开门
计时器时间到
按按钮 开门
空闲、开门 entry/开灯
关门
开门 关门
空闲、门关 entry/关灯
Put( c)[c= =“;”]/return true
Waiting 等待状态
Put( c)[c= =“<”]
Put( c)[c/=“<”]/return false
GettingToken 获得符号状态
Put( c)[c= =“>”]
GettingBody Put( c)[c/=“>”]/token.append( c); 获得主句状态
4. 状态转换定义:当出现特定事件且满足监护条 件时,引发对象状态转换,并执行一定的动作。
源状态 事件特征标记[监护条件] / 动作表达式 目标状态
21
状态图表示
用状态和伪状态表示状态图中的状态顶点,用连接 顶点的有向弧表示转换,弧上标注引发转换的事件
• 例1--监视传感器的控制器类的状态图:
无条件
时间事件和改变事件的表示:
活动
when(温度>1200)/测试设 备
after(3分钟)/断电 空闲
18
2.状态定义:状态是对象生命期的一个阶段,在 该阶段中,对象满足一些特定的条件、从事特定 的活动或等待某个(些)事件。
3.动作定义:动作是在状态内或在状态转化时所 做的操作,是原子的和即时的。
状态表示:
…
<<signal>> xyz
…
假设A转换由abc引发,B转换由 xyz引发,则xyz信号事件将引发 A转换和B转换
17
一般事件的表示:
对事件的 规格描述
源状态 事件特征标记[监护条件] / 动作表达式 目标状态
例1:right-mouse-down(location)[location in window]/object:=pick-object(location) 例2:Object.highlight();
分支条件
ob3:C3
:C4
Op( ) ob1:C1
对象
匿名对象
[x>0]create(x) ob2:C2
[x<0]bar(x) doit(w)
doit(z)
创建对象
消息
激活
(控制焦点)
自调用
more( )
销毁
生命线
3
顺序图示说明
对象---类创建的对象实体名 匿名对象---只表示类名 创建对象---通过消息发送创建的对象 生命线---表示对象存在的时间段 激活(控制焦点)---表示对象行为的操作历程,即活动的持续时间 销毁---对象被结束生命(杀死) 自调用---对象的操作递归调用自己,或本对象的其他操作 消息--- 包括:
Cashier
Account
Validation Info
13
2.7 状态图(State Transition)
状态图表示对象事物的行为,描述了一个对象在 其生命期内响应事件所经历的状态序列以及对这 些事件所做出的反应。
• 对象事物在生命期中都经历不同的状态; • 在特定时间,一个事物总是位于一个确定的状态; • 实际问题中,总会存在引起事物状态变化的事件; • 对象事物在状态间的转换,总会按照一定的次序; • 对象事物状态的转化是即时的; • 事件发生时,对象事物需要采取相应的动作。
return false
Put( c)[c/=“;”]/body.append( c);r eturn false
23
• 例3--电话连接对象的状态图:
拿起话筒/发 出拨号声
空闲
活动
超时 do/显示信息
拨号(n)[未完成]
拨号音 do/放拨号音
止住
拨号(n)
拨号
拨号(n)[无效]
无效 do/显示信息
2.6.1 顺序图(Sequence) • 作用:在给定的语境中,通过对象之间的消息
通信,展现对象的行为;用以发现对象的操作, 也可协助发现主动对象
• 表示:对象(与参与者)之间的交互 – 元素:一组协作的对象(与参与者)和之间发送 的消息 – 强调:消息之间的顺序
2
顺序图示例:
参与者
消息名 条件和参数
状态名称
动作标号1/动作表达式1
内部
动作标号2/动作表达式2
动作
……
伪状态表示:
初始状态 终止状态
19
• 与状态有关的几个概念:
1)内部动作---不发生状态转换的动作 2)延迟事件---保留在状态队列中,待适当时通过算
法取出执行的事件,表示为:事件/defer 3)伪状态---初始和终止状态,
• 特定动作标号:
2.6 UML交互图(顺序图和协作图) 2.6.1 顺序图概念与表示 2.6.2 顺序图的建立 2.6.3 协作图概念与表示 2.6.4 协作图的用途
2.7 状态图 2.7.1 状态图概念与表示 2.7.2 状态图的建立
2.8 包图 2.8.1 包图概念与表示 2.8.2 包的组织和划分
1
交互图 顺序图---强调消息交互的时序; 协作图---强调对象收发消息的组织结构