计算机的简单理论模型到有限状态机
时间:09-13
来源:周立功单片机
点击:
表列出了所有状态下,接收所有事件后的状态是如何变化的,因此很容易帮助发现遗漏了哪些状态转移。虽然状态转移表的优点是直观,但其缺点也是非常明显的,那就是难以确认状态转移的完整性。
显然,通用状态图与状态表描述状态机的行为,开发者可以很容易检查那些未知的,甚至没有处理的情况。比如,闸机在Unlocked状态下没有处理card事件的转移,且在Locked状态下也没有处理pass事件的转移。假设如果闸机在Locked状态收到一个非法pass事件,则状态不变并执行alarm动作,其业务序列图详见图 4.8(b)。如果乘客不熟悉流程,当闸机已经转移到Unlocked状态时,而乘客还在刷卡(card),则闸机会发出"滴"的声音提示乘客,并显示"票价和余额,闸机已经打开,请通过,谢谢!" 其业务序列图详见图 4.8(c),完整的闸机状态转移表详见表 4.2。
表 4.2 完整的闸机状态转移表
起始状态 | 事件 | 结束状态 | 动作 |
Locke | car | Unloc | unloc |
在关闭状态下,当需要增加报警功能时,只需要新增一条事件/动作线,详见图 4.9 (b)。同理,增加一条事件/动作线表示闸门在已经打开时继续刷卡的情况,详见图 4.9 (c)。由于这两种情况不会改变闸机的状态,因此导向箭头起始和结束均为同一状态。
- 电源软启动的实用设计技巧(07-16)
- 周立功:动态分布内存——malloc()函数与calloc()函数(07-22)
- 周立功“程序设计与数据结构”:深度解剖动态分布内存的free()函数与realloc()函数(07-25)
- 周立功教你学程序设计技术:做好软件模块的分层设计,回调函数要这样写(07-30)
- 周立功教你学C语言编程:教你数组是如何保存指针的(07-31)
- 算法的泛化问题,这些坑你可能都经历过!|周立功教你学软件设计(08-01)