UML设计模式 5 动态建模(2)-状态模型
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UML和设计模式
20
不同点
a) 触发一个系统或对象的状态(活动)发生迁
移的机制不同。 状态图:必须有事件触发才能发生迁移。
活动图:活动执行完毕自动发生迁移。 b) 描述多个对象共同完成一个操作的机制不同。 状态图:针对一个系统或某一个对象描述在其 生存期内的行为、所经历的状态序列、引起 状态注意的事件以及相应的动作。 活动图:描述几个对象共同完成一个操作或用 例实例所需的活动。
5
状态图的建模元素
UML和设计模式
6
(1) 状态
状态是对象在其生存期中的一种条件或状况,如进行
某些活动、等待某种事件出现等。 状态通常由其属性值、与其它对象的链接来确定。 对象的状态的数量是有限的。 状态的图符分为长式、短式两种。 其中,状态变量是状态图所描述的类的属性; 活动是在该状态时要执行的事件和动作。
对象所处的状态可因某种原因而改变,如:某种事件
发生、满足某一条件、动作执行完毕等。 状态图的迁移上须注明引起迁移的事件、条件或动作。
UML和设计模式
11
描述迁移的语法格式:
事件 [条件] / 动作表达式 发送子句
事件:指已发生并可能引发某种活动的一件事; [条件]:由方括号围起的关系或逻辑表达式; 动作表达式:触发状态迁移时可执行的动作;
权 巍
主要内容
动态建模——状态模型 状态图 活动图与状态图的比较
UML和设计模式
2
5.1 动态建模——状态模型
动态建模
交互建模
状态建模
顺序图
合作图
状态图
活动图
UML和设计模式
3
活动图:
活动图(Activity diagram)用来表示完成一个操作 所需要的活动,或者一个用例场景的活动。是一种流 程图,描述了活动的序列,即系统从一个活动到另一 个活动的控制流。
状态图:
状态图(Statechart diagram)用于描述一个对象 在其生存周期内的动态行为, 表现一个对象所经历的 状态序列, 引起状态转移的事件(event), 以及因状态转 移而伴随的动作(action).
UML和设计模式
4
5.2 状态图
状态
起始状态
迁移 事件
某机器的状态图
终止状态
UML
一个设备使用状况的状态图
UML和设计模式 8
活动区中的事件和动作的语法: 事件名(参数表)/ 动作表达式
其中,事件可以是UML定义的事件,也可以是用户自
定义的事件。 UML中的常用事件包括:
entry、exit、do:入口、出口事件、状态中执行的事
件 after:“after(时间表达式) / 动作” defer:“事件名 / defer” when:“when(逻辑表达式) / 动作” error:“<<error>>出错事件名”
例: when(温度>100)/ 停止加热 / 指示灯熄灭
发送子句:动作的一个特例,说明调用的事件名 (操作)是哪个对象的。
例如:[超时] / self.下降(第一层)
UML和设计模式 12
UML和设计模式
13
两种形式的状态迁移示例
UML和设计模式 14
(3) 嵌套状态、历史状态
状态可以嵌套,在一个状态的图符内部可添加一 个或多个子状态组成的子状态图,称为状态的嵌 套。 历史状态是伪状态,其目的是记住从嵌套的状态 中退出时所处的子状态, 当再次进入嵌套的状态时, 可以直接进入这个子状态, 而不是再从嵌套的状态 的初态开始。
UML和设计模式 21
UML和设计模式
17
(4) 并发的状态
UML和设计模式
18
5.3 活动图与状态图的比较
状态
活动
相同点:
a) 建模的图符基本一致。 b) 描述系统或对象在生存期内的状态或行为。
c) 可描述系统或对象在多进程操作中的并发行为。
d) 可用条件分支描述系统或对象的行为控制流。
UML和设计模式
19
描 述 “ 增 加 课 程 ” 用 例 的 活 动 图
UML和设计模式 9
Lighting
entry/ turnOn do/ blinkFiveTimes event powerOff/ powerSupplySelf exit/ turnOff event selfTest/ defer
UML和设计模式 10
(2) 迁移
一个对象从某种状态变为另一种状态称为迁移。
UML和设计模式
15
描述设备(车床)状况的嵌套状态图
UML和设计模式 16
历史状态分为两种:浅历史状态、深历史状态
浅(shallow)历史状态, 只记录最外层组合状态的 历史. 深(deep)历史状态, 可以记录任意深度的组合状态 的历史. 历史状态指示器可以有进入它的状态迁移,但没有 离开它的状态迁移.