状态机编程修炼_第1页
状态机编程修炼_第2页
状态机编程修炼_第3页
状态机编程修炼_第4页
状态机编程修炼_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

有限状态机(FSM)编程修炼黄师傅

第一章20多年以前,DavidHarel创造了状态机理论来描述复杂的交互系统。随后,状态机理论赢得了广泛的接受,并且被引入到许多软件系统中,最突出的是被引入到UML中作为其一个组成部分。

什么是有限状态机有限状态机系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。

第一章有限状态机要素Transition(迁移)从一个状态切换到另一个状态被称为Transition(“迁移”)。引起状态迁移的事件被称为triggeringevent(“触发事件”),或者被简称为trigger(“触发”)。

Action(动作)当一个Event被状态机系统分发的时候,状态机用Action(“动作”)来进行响应,比如修改一下变量的值、进行输入输出、产生另外一个Event或者迁移到另外一个状态等等。

FSMActionTransitionStateGuardEventState(状态)一个系统在其生命周期中某一时刻的运行情况,此时,系统会执行一些动作或者等待一些外部输入。Guard(条件)状态机对外部消息进行响应的时候,除了需要判断当前的状态,还要判断跟这个状态相关的一些条件是否成立。这种判断称为guard(“条件”)。guard通过允许或者禁止某些操作来影响状态机的行为。

Event(事件)就是在一定的时间和空间上发生的对系统有意义的事情。第二章为什么要用状态机编程节省时间

从无序的,繁重的工作中解脱

第三章状态机修编程炼IF...ELSEIF...ELSE1SWITCH...CASE2第三章状态机修编程炼SWITCH...CASE2第三章状态机修编程炼SWITCH...CASE2第三章状态机修编程炼SWITCH...CASE2第三章状态机修编程炼分析:这个是最简单、最常用的FSM实现方法。通过嵌套的2层switchcase实现。外层switchcase判断状态,内层switchcase判断消息。状态采用枚举量。优点:结构简单,便于理解。缺点:代码冗长。结论:这种代码结构感觉比较冗长,不建议在复杂的状态机中使用。优缺点TABLE13第三章状态机修编程炼TABLE13第三章状态机修编程炼这种FSM实现方法对switchstatement进行了改良。根据state、event做成了2维表格,表格中的项就表示action和transition。状态采用枚举量。优点:结构简单,便于理解。代码比较简练。效率最高。缺点:代码结构不是太好,仍然只是针对具体问题。结论:这是一种常用的实现方法。如果没有更好的选择,可以使用。优缺点TABLE23第三章状态机修编程炼这TABLE2只是TABLE1的改良版本,将Action封装API。优缺点TOOLvsLIB4第三章状态机修编程炼TOOLLIBVSTABLE3TABLE4---TOOL4第三章状态机修编程炼这TABLE4只是TABLE3的改良版本,更规范些。这以上宏定义ini的状态机。TABLE3TABLE4---TOOL4第三章状态机修编程炼这TABLE4只是TABLE3的改良版本,更规范些。ini_trans_define对ini状态机进行初始化,及转换表的设置。TFSM_DISPATCH实现事件分发。TABLE5---LIB4第三章状态机修编程炼通过这些api调用实现状态机编程。TOOLvsLIB一个是产生代码,一个是提供api供调用者调用。总结4第三章状态机修编程炼状态机编程修炼唯一没用到得元素Guard,供大家讨论如何是用。该怎样进行时间管理效益效能效率勤恳分享时间产生的效益和“效能、效率、勤恳”三要素之间的关系为:效益(Benefit)效果与利益,是最终追求的结果效能(Effectiveness)强调目的正确、效果有利效率(Efficiency)是指在单位时间里完成的工作量勤恳(Diligence)充分利用时间,不浪费在这三个要素中,效能最为重要,效率次之,勤恳再次之。也就是说,做好时间管理,选择做最重要的事(效能)是根本,然后再正确地去做事(效率),最后再根据前两个要素的实际效果并结合原定计划,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论