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


Различают следующие принципы проектирования: Необходимо обеспечить:
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 событие, активный экземпляр экземпляр);
}

Теория операции: прохождение конечного автомата.
Теория операции: прохождение конечных автоматов .

Зависимости, связанные с совершением события 8

Когда прикладной класс принимает событие , он вызывает активный экземпляр .совершить событие.
В этом вызове прикладной класс передаёт входными параметрами номер полученного события и ссылки (дескрипторы) как КМС ,которые необходимо пройти ,так и экземпляра, который получил событие.
Затем операция совершить событие использует текущее состояние активного экземпляра и вызывает операцию КМС .пройти.
Операция КМС.пройти представляет каждый переход .КМС на рассмотрение внешнему модулю переход.соответствовать до тех пор ,пока он не сообщит ,что обнаружен переход соответствующий номеру события и текущему состоянию, и что известно соответствующее значение для нового состояния .
Операция КМС.пройти теперь возвращает новое состояние активному экземпляру.совершить событие,которое модифицирует состояние активного экземпляра и возвращает его значение вызывающему прикладному классу.
Если операция КМС.пройти исчерпает список переходов без получения успешного ответа из модуля переход.соответствовать, то мы столкнулись с ячейкой не может произойти из таблицы переходов в состояние .Это указывает на то что произошла ошибка либо в анализе либо в реализации.

Загрузка...