Механизм архитектуры конечного автомата


class переход {

int старое_состояние;

int событие;

int новое_состояние;

public:

int соответствовать(int событие, int текущее состояние, переход экземпляра)

void создать (int событие, int новое_состояние, int старое_состояние, КМС my_fsm);

}

Класс переход инкапсулирует данные, которые описывает каждый переход для всех моделей состояний в программе. Каждый экземпляр перехода соответствует ячейке (отличной от ячейки НП) в таблице переходов состояния.

class КМС {

string имя_КМС;

переход экземпляр1;

……

переход экземплярN;

public:

int пройти (int события; int текущее_состояние, КМС my_fsm);

void Добавить переход (КМС my_fsm);

КМС создать (string имя_КМС);

}

Класс КМС служит для связывания всех экземпляров перехода, которые составляют одну модель состояний. Точная физическая структура данных, применяемых в КМС и переходе будет зависеть от используемой среды разработки. Один из возможных подходов заключается в определении КМС как потомка класса список.

КМС

Активный экземпляр явл-ся абстрактным классом, из кот-го все экземпляры, имеющие конечные автоматы, наследуют их текущее состояние.

class активный_экземпляр{

int текущее_состояние;

public:

int совершить_событие(КМС my_fsm, int событие, активный экземпляр экземпляр);

}

Загрузка...