|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjp.go.aist.rtm.RTC.StateMachine<STATE,RESULT,LISTENER>
public class StateMachine<STATE,RESULT,LISTENER>
状態マシンクラスです。
StateMachine クラスは状態マシンを実現するクラスです。
例: ActiveObjectは状態マシンを持つアクティブオブジェクトであるとします。
状態は3状態 INACTIVE, ACTIVE, ERROR あり、各状態でのEntryやExit動作を
定義したいとすると、以下のように実現されます。
class ActiveObject {
public ActiveObject() {
m_sm = new StateMachine(3);
m_sm.setListener(this);
m_sm.setExitAction(INACTIVE, new inactiveExit());
:
m_sm.setPostDoAction(ERROR, new errorPostDo());
m_sm.setTransitionAction(new tratransitionnsition());
StateHolder st = new StateHolder();
st.prev = LifeCycleState.INACTIVE_STATE;
st.curr = LifeCycleState.INACTIVE_STATE;
st.next = LifeCycleState.INACTIVE_STATE;
m_sm.setStartState(st);
m_sm.goTo(LifeCycleState.INACTIVE_STATE);
}
private class inactiveExit implements StateAction {
public Object doAction(StateHolder state) {
}
}
:
private class errorPostDo implements StateAction {
public Object doAction(StateHolder state) {
}
}
private class tratransitionnsition implements StateAction {
public Object doAction(StateHolder state) {
}
}
private StateMachine m_sm;
}
状態を持たせたいクラスは以下の条件を満たすように実装しなければなりません。
| コンストラクタの概要 | |
|---|---|
StateMachine(int num_of_state)
コンストラクタです。 |
|
| メソッドの概要 | |
|---|---|
STATE |
getState()
現在の状態を取得します。 |
void |
goTo(STATE state)
状態を変更します。 |
boolean |
isIn(STATE state)
現在状態を確認します。 |
boolean |
setDoAction(STATE state,
StateAction call_back)
Do action 関数を登録します。 |
boolean |
setEntryAction(STATE state,
StateAction call_back)
Entry action 関数を登録します。 |
boolean |
setExitAction(STATE state,
StateAction call_back)
Exit action 関数を登録します。 |
void |
setListener(LISTENER listener)
Listener オブジェクトを登録します。 |
void |
setNOP()
NOP関数を登録します。 |
boolean |
setPostDoAction(STATE state,
StateAction call_back)
Post action 関数を登録します。 |
boolean |
setPreDoAction(STATE state,
StateAction call_back)
PreDo action 関数を登録します。 |
void |
setStartState(StateHolder states)
初期状態をセットします。 |
boolean |
setTransitionAction(StateAction call_back)
State transition action 関数を登録します。 |
RESULT |
worker()
StateMachineの駆動用クラスです。 |
| クラス java.lang.Object から継承されたメソッド |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
|---|
public StateMachine(int num_of_state)
コンストラクタです。
num_of_state - 状態数| メソッドの詳細 |
|---|
public void setNOP()
NOP関数を登録します。
public void setListener(LISTENER listener)
Listener オブジェクトを登録します。
listener - 登録対象リスナー
public boolean setEntryAction(STATE state,
StateAction call_back)
Entry action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public boolean setPreDoAction(STATE state,
StateAction call_back)
PreDo action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public boolean setDoAction(STATE state,
StateAction call_back)
Do action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public boolean setPostDoAction(STATE state,
StateAction call_back)
Post action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public boolean setExitAction(STATE state,
StateAction call_back)
Exit action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public boolean setTransitionAction(StateAction call_back)
State transition action 関数を登録します。
state - 登録対象状態call_back - 実行アクションクラス
public void setStartState(StateHolder states)
初期状態をセットします。
states - 初期状態(1つ前,現在,遷移予定)public STATE getState()
現在の状態を取得します。
public boolean isIn(STATE state)
現在状態を確認します。
state - 確認対象の状態
public void goTo(STATE state)
状態を変更します。
state - 遷移先の状態public RESULT worker()
StateMachineの駆動用クラスです。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||