class S0 : public S { public: // Конструктор S0(MainData *pMainData) :S(pMainData) { } // Метод, реализующий действия для состояния virtual S* execute(){ pMainData->e0(); if(/* Проверка входных переменных для первой дуги */) { // Выполнение выходных воздействий zN(); ... zM(); // Возвращаем новое состояние I return pMainData->pSI; } else if ... } };