-
Notifications
You must be signed in to change notification settings - Fork 0
ООП6. ООА. Динамическое поведение объектов — жизненные циклы. Понятия состояний, событий и действий.
Жизненные циклы объектов:
- В каждый момент объект находится в какой-то одной стадии
- Переход из одной стадии в другую происходит скачкообразно и является реакцией на какой-то инцидент
- Переходы возможны не из всех состояний
Модель состояний Мура:
- Множество состояний
- Множество событий (инцидентов)
- Правила перехода
- Действие (для каждого состояний)
Множество состояний задается либо через ДПС и/или ТПС.
ДПС (Диаграмма переходов состояний) – состоит из прямоугольников, соединенных стрелками, над каждой стрелкой – событие, которое осуществляет переход из одного состояния в другое.
ТПС (Таблица переходов состояний) представляет собой матрицу: строки – это состояния, столбцы – это события. Вся матрица должна быть заполнена. Каждая ячейка – это новое состояние, в которое можно перейти из данного состояния по этому событию. Если событие игнорируется, ставят прочерк. Если событие в данном состоянии не может произойти, то ставят крестик.
Состояние – это положение объектов, в котором определяются определённый набор правил, линий поведений, предписаний, определённых законов. Каждому состоянию ставится в соответствие уникальные имя или номер, в соответствии с отношением.
Виды состояний:
- Создание
- Заключительное - экземпляр становится неподвижным (нет перехода в другие состояния) или объект прекращает своё существование. Рисуется пунктирной линией.
- Текущее - состояние в котором объект может находиться, но которое не является заключительным или начальным.
Модель состояний скачкообразная. Плавный переход из состояния в состояние можно осуществить, добавив несколько промежуточных состояний.
При составлении модели делают анализ отказов (то есть анализ аномального поведения объекта).
Нужно определить/проверить:
- Какой инцидент в реальном мире мог бы вынудить объект к переходу в некорректное состояние.
- Гарантируется ли наступление каждого события.
- Если событие происходит, то нормально ли это.
- Гарантируется ли что событие происходит своевременно (когда объект находится в нужном состоянии).
Событие – это абстракция инцендента или сигнала в реальном мире, которое сообщает нам о перемещении чеголибо в новое состояние.
Значение события - короткая фраза, которая сообщает нам, что происходит с объектом в реальном мире.
Предназначение - это модель состояний, которое принимает событие, может быть один единственный приёмник, для данного события.
Метка – уникальная метка должна обеспечиваться для каждого события. Внешние события помечаются буквой «Е»
Данные события – данные, сопровождающие событие.
Правила, связывающие события и данные:
- Правило тех же данных – все события, которые вызывают переход в определенное состояние, должны нести одни и те же данные.
- Правило состояний несоздания – если событие переводит объект из состояния в состояние, то оно должно переносить идентификатор объекта.
- Правило состояния создания – событие, переводящее объект в состояние создания, не несёт его идентификатора.
Действие – это деятельность или операция, которая выполняется при достижении объектом состояния. С каждым состоянием связано только одно действие. Действие должно выполняться любым объектом одинаково.
Действие может:
- Выполнять любые вычисления
- Порождать события для любого объекта любого класса
- Порождать события для чего-либо вне области анализа
- Выполнять все действия над таймером - создавать\удалять\устанавливать\считывать.
- Читать, записывать атрибуты собственного класса и других классов
Еще несколько правил:
- Действие не должно оставлять данные противоречивыми.
- Действие не должно оставлять противоречивыми связи (если был удалён объект, то нужно позаботиться и об удалении\изменении связанных с ним объектов).
- Только одно действие может выполняться в данный момент для конкретного объекта; но для разных – действия могут выполняться одновременно.