
状态机图的应用
状态机图的应用

课程内容 7 建立状态机图 状态机图的应用
课程内容 建立状态机图 状态机图的应用 1 2

1、建立状态机图 冬绘制状态机图的一般步骤是: ■寻找主要的状态 ·寻找外部事件,以便确定状态之间的转换 ·详细描述每个状态和转换 ·把简单状态图转换为复合状态图
1、建立状态机图 ❖绘制状态机图的一般步骤是: ◼ 寻找主要的状态 ◼ 寻找外部事件,以便确定状态之间的转换 ◼ 详细描述每个状态和转换 ◼ 把简单状态图转换为复合状态图

1、建立状态机图 冬以航班机票预订系统为例 1.1寻找主要状态 冬对于航班机票预订系统而言,把飞机票看作一个整 体来看有哪几种状态,以及有哪些事件触发机票状 态的变化。 ·飞机票有以下状态:无预订、部分预订、预订完 、预订关闭 可能有的外部事件:预订(0、退订(0、关闭0、取 消航班0
1、建立状态机图 ❖以航班机票预订系统为例 1.1 寻找主要状态 ❖对于航班机票预订系统而言,把飞机票看作一个整 体来看有哪几种状态,以及有哪些事件触发机票状 态的变化。 ◼ 飞机票有以下状态:无预订、部分预订、预订完 、预订关闭 ◼ 可能有的外部事件:预订()、退订()、关闭()、取 消航班()

1、建立状态机图 1.2确定状态间的转换 冬分析状态之间的外部转换,即确定当机票处于这一状 态时,哪些外部事件能真正改变机票状态,哪些事件 对本状态不起作用。 源目标 无预订 部分预订 预订完 预订关闭 无预订 预订0 不直接转换 关闭0 部分预订 退订0事件发生 预订0,无空 关闭0 后,使预订人=0 座 预订完 不直接转换 退订0 关闭0 预订关闭 无转换 无转换 无转换
1、建立状态机图 1.2 确定状态间的转换 ❖分析状态之间的外部转换,即确定当机票处于这一状 态时,哪些外部事件能真正改变机票状态,哪些事件 对本状态不起作用。 源目标 无预订 部分预订 预订完 预订关闭 无预订 预订() 不直接转换 关闭() 部分预订 退订()事件发生 后,使预订人=0 预订(),无空 座 关闭() 预订完 不直接转换 退订() 关闭() 预订关闭 无转换 无转换 无转换

1、建立状态机图 [退订数=已预订数] 退订(0 无预订 部分预订 预订0 [预订数=空 位数 取消航班() 预订(0 关闭0 关闭0) 业 预订关闭 预订完 退订0 关闭0
1、建立状态机图

1、建立状态机图 1.3详细描述每个状态和转换 ·给状态添加内部转换、外部转换时的进入和退出动 作,以及相关的活动等。 冬在本例中,还存在一些内部转换和活动: ·机票处在“部分预订”状态时,当发生退订事 件时,如果退订数小于预订数,那么状态不变; 当发生预订事件时,如果预订数小于空位数,那 么状态也是不变的。 ·从初态到"无预订”状态时,要对机票数、预 定数和空座位数进行初始化活动
1、建立状态机图 1.3 详细描述每个状态和转换 ❖给状态添加内部转换、外部转换时的进入和退出动 作,以及相关的活动等。 ❖在本例中,还存在一些内部转换和活动: ◼ 机票处在 “部分预订” 状态时,当发生退订事 件时,如果退订数小于预订数,那么状态不变; 当发生预订事件时,如果预订数小于空位数,那 么状态也是不变的。 ◼ 从初态到 “无预订” 状态时,要对机票数、预 定数和空座位数进行初始化活动

1、建立状态机图 ·当预订事件和退订事件发生时,都应该更新预 订数和空位数的值。但由于座位总数是已知的 ,因此只要更新预订数就可以了。 退订数=已预订数] 业 退订/已预订数=退订数 无预订 部分预订 entry/reset() 预订/已订数+=预订数 event退订[退订数<已顶订数y event预订O预订数<空位数y 取消航班Q 关闭0 [预订数=空位数] 关闭0) 预订0 预订关闭 关闭0 预订完 退订/已预订数-=退订数
1、建立状态机图 ◼ 当预订事件和退订事件发生时,都应该更新预 订数和空位数的值。但由于座位总数是已知的 ,因此只要更新预订数就可以了

1、建立状态机图 1.4把简单状态图转换为复合状态图 预订中 [退订数=已预订数] 来 退订/已预订数=退订数 无预订 部分预订 event退订0O[退订数<已预订数]/ entry/reset() event预订O[预订数<空位数]/ 预订/已订数+=预订数 取消航班0 [预订数=空位数] 业预订0 预订完 退订/已预订数=退订数 关闭0 业 预订关闭
1、建立状态机图 1.4 把简单状态图转换为复合状态图 ❖可以将无预定、部分预订、预订完三个状态归结为“ 预订”状态,采用一个复合状态,即“预订”状态来 表示该图

2、状态机图的应用 状态机图主要应用有两种:一是,在对象生命周期 内对一个对象的整个活动状态建模;二是,对反应 型对象的行为建模。 2.1对对象的生命周期建模 冬使用状态机最通常的目的是对对象的生命周期建模 即描述对象在生命周期内,各种状态以及在外部 事件的作用下,状态之间的转换。 冬交互图建模是用来描述多个协作对象的行为;而状 态机是对单个对象在整个生命周期内的行为建模。 在对对象的生命周期建模时,它主要描述:对象能 够响应的事件、对这些事件的响应产生的行为,以 及行为的后果
2、状态机图的应用 ❖状态机图主要应用有两种:一是,在对象生命周期 内对一个对象的整个活动状态建模;二是,对反应 型对象的行为建模。 2.1 对对象的生命周期建模 ❖使用状态机最通常的目的是对对象的生命周期建模 ,即描述对象在生命周期内,各种状态以及在外部 事件的作用下,状态之间的转换。 ❖交互图建模是用来描述多个协作对象的行为;而状 态机是对单个对象在整个生命周期内的行为建模。 ❖在对对象的生命周期建模时,它主要描述:对象能 够响应的事件、对这些事件的响应产生的行为,以 及行为的后果