分类: IT职场
2014-11-09 00:42:36
状态机的理论基础:
有限状态机(Finite State Machine)系统,是指在不同阶段会呈现出不同的运行状态的系统,这些状态是有限的、不重叠的。这样的系统在某一时刻一定会处于其
所有状态中的一个状态,此时它接收一部分允许的输入,产生一部分可能的响应,并且迁移到一部分可能的状态。
状态机的五元组元素:
1.State(状态)
State(“状态”),就是一个系统在其生命周期中某一时刻的运行情况,此时,系统会执行一些动作,或者等待一些外部输入。
2. Guard(条件)
状态机对外部消息进行响应的时候,除了需要判断当前的状态,还要判断跟这个状态相关的一些条件是否成立。这种判断称为guard(“条件”),guard通过允许或者禁止某些操作来影响状态机的行为。
3. Event(事件)
Event(“事件”),就是在一定的时间和空间上发生的对系统有意义的事情。
4. Action(动作)
当一个Event被状态机系统分发的时候,状态机用Action(“动作”)来进行响应
5 .Transition(迁移)
从一个状态切换到另一个状态被称为Transition(“迁移”)。引起状态迁移的事件被称为triggering event (“触发事件”),或者被简称为trigger (“触发”)。
在这个五元组中,人们往往忽略了在状态下面需要执行动作的条件和执行响应的动作。
年龄变化的状态机:
为什么要用状态机来设计一个人的年龄变化,一方面当然是学以致用,另外一方面可以把复杂的问题图形化后变得简单和容易理解。
稍微解释一下这个状态机,首先把人生分成了4个状态,分别是Baby期,中学期,大学期,社会期。我定义的每一个状态的迁移事件也都是很有意思的,six years事件是标准的九年制义务教育的入学年龄,law person事件,是一个人承担法律责任的开始,而society man事件表明人已经走入社会了,可以去实现自己的梦想了。每一个状态下面的响应动作,也是一个人要在这个期间要做的主要事情。
日常行为状态机:
一个人要想成功,那么他的日常行为就起着决定性的作用,你是否还在为某些事情苦恼和犹豫,那么看看状态机吧。
对比一下,每个人都不一样,可以做的更详细,坚持下来,你will be victory!
附件是一个 程序语言的状态机设计的例子,跨界应用过后,才发现如此有趣。c语言状态机资料.rar