Обзор преобразования ООА в ООП.


Различают следующие принципы проектирования: Необходимо обеспечить:
1) Механизмы поддерживающие конечные автоматы и таймеры с помощью классов в данном архитектурном домене.
2) Линии поведения и соглашения для создания прикладного проектирования устанавл-ся архитектурным доменом. Эти соглашения устанавливаются как правила преобразования, кот-е создают компоненты проектирования из компонентов ООА.
Эти два положения гарантируют, что система проектируется и реализуется единообразно и связно.
Краткий обзор проектирования.
Програмные компоненты, соотв-е данной архитектуре:

3) ………………………….. активный экземпляр, обеспечивающий механизмы, необходимые для инициализации и выполнения конечных автоматов.
4) Таймер обеспечивает механизм, аналогичный объекту таймер в ООА.
Прикладные классы аналогичны и получаются из объектов и моделей состояний ООА. Каждый класс отвечает за ту же деятельность, которую выполняет его аналог в ООА.

Механизм архитектуры конечного автомата.
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 событие, активный экземпляр экземпляр);
}

Загрузка...