状态机:
状态机是展示状态与状态转换的图,在操作系统的进程调度中,通常用状态机描述进程的各个状态之间的转换关系
利用状态机可以精确地描述对象的行为: 从对象的初始状态起,开始响应时间并执行某些动作,这些事件引起状态的转换。
状态机的五部分:
状态,转换,事件,活动,动作
名称 |
解释 |
状态 |
表示一个模型在其生存期内的状态,如满足某些条件,执行某些操作或等待某些事件 |
转换 |
表示俩个不同状态之间的联系,事件可以触发状态之间的转换 |
事件 |
是某个时间产生的,可以触发状态之间的转换 |
活动 |
活动是状态机中进行的一个非原子的执行,由一系列动作组成 |
动作 |
动作是一个可执行的原子计算,它导致状态的变更 |
一个状态图表示一个状态机 ,主要用于表现从一个状态到另一个状态的控制流,它不仅可以展现一个对象拥有的状态,还可以说明时间如何随着时间的推移来影响这些状态。
状态图:
状态图用于描述一个对象在其生命周期的动态行为,表现为一个对象所经历的状态序列,引起的状态转移的事件(event)
以及因状态转移而伴随的动作(action)。
状态:opened,closed,locked
事件:open,close,lock,unlock
注意:
1. 并不是所有的事件都会引起状态的转移,比如当门是处于【opened】状态,不能进行【locked】事件
2. 转移【transition】 有警戒条件【guard condition】 ,
比如只有doorway->isEmpty 条件满足时,才会响应事件
状态图的元素:
1. 状态(states)
状态定义对象在其生命周期中的条件或状况,在此期间,对象满足某些条件,执行某些操作或等待某些事件
状态用圆角矩形表示
初态和终态:
初态用实心圆点表示,终态用圆形内嵌圆点表示:
状态有五个组成部分
名字 |
状态的名字是由一个字符串组成 |
入口/出口 |
入口/出口表示进入/退出这个状态所执行的动作 |
内部转换 |
内部转换是不会引发状态变化的转换,此转换的触发不会导致状态的入口/出口动作被执行 |
延迟事件 |
延迟事件是该状态下暂不处理,但将推迟到该对象的另一个状态下事件处理队列 |
子状态 |
一个状态内部还包括其他状态 |
2. 转换:
转换是俩个状态之间的一种关系,表示对象在源状态中执行一定的动作,并在某个特定事件发生而且某个特定的警界条件满足时进入目标状态
事件标记(close/):是转移的诱因,可以是一个信号,事件,条件,条件变化
警界条件:当警界条件满足时,事件才会转移
结果:对象状态转移后的结果
3. 动作
动作是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的
4. 源状态
转换描述的是状态机所在的对象的状态的变化,转换使对象从一个状态转换到另一个状态,那么在转换被激发之前,对象所处的状态就是转换的源状态
5. 目标状态:
转换完成之后,对象状态发生了变化,这时对象所处的状态就是转换的目标状态
状态图和活动图的区别:
1. 状态图侧重从行为的结果来描述(状态)
2. 活动图侧重从行为的动作来描述(活动)
附加:这是我根据状态图的基本要点画的<机房收费系统>的状态图:
学生上下机状态图:
工作员工工作的状态: