你的位置:首页 > 软件开发 > ASP.net > 敏捷软件开发(1)

敏捷软件开发(1)

发布时间:2016-05-18 12:00:10
如果状态在运行过程中,不停的切换和改变,我们怎么办?状态的迁移是我们生活和工程中非常普遍的一个概念。于是在数学上有一种理论来分析和解决这个问题。有限状态机理论是一个非常成熟的理论,所有动作和流程的迁移可以归结为状态的迁移。这个理论的前提是:状态的数目是确定的,或者说是有限的。状态 ...

  如果状态在运行过程中,不停的切换和改变,我们怎么办?

状态的迁移是我们生活和工程中非常普遍的一个概念。于是在数学上有一种理论来分析和解决这个问题。

有限状态机理论是一个非常成熟的理论,所有动作和流程的迁移可以归结为状态的迁移。

这个理论的前提是:

状态的数目是确定的,或者说是有限的。

状态的迁移方向是固定的,也就是有向的。  

 

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足来确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

进入动作(entry action):在进入状态时进行

退出动作:在退出状态时进行

输入动作:依赖于当前状态和输入条件进行

转移动作:在进行特定转移时进行

 

下面我们将按照一个地铁轧机的操作来讲解有线状态机理论。

 

 敏捷软件开发(1)

地铁轧机的整体状态图如上。基本就是开和关2种行为。

关于FSM,可以有3种实现方式。

1.switch case方式

package com.joyfulmath.state.switchcase;/** * @author deman.lu * @version on 2016-05-18 09:43 */public class Turnstile {  //status  public static final int LOCKED   = 0;  public static final int UNLOCKED  = 1;  //events  public static final int COIN    = 0;  public static final int PASS    = 1;  int state = LOCKED;  private TurnstileController turnstileController;  public Turnstile(TurnstileController turnstileController) {    this.turnstileController = turnstileController;  }  public void enent(int event)  {    switch (state)    {      case LOCKED:        switch (event)        {          case COIN:            state = UNLOCKED;            turnstileController.unlock();            break;          case PASS:            turnstileController.alarm();            break;        }        break;      case UNLOCKED:        switch (event)        {          case COIN:            turnstileController.thankYou();            break;          case PASS:            state = LOCKED;            turnstileController.lock();            break;        }        break;    }  }}

原标题:敏捷软件开发(1)

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录