Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции комп мод.doc
Скачиваний:
23
Добавлен:
23.08.2019
Размер:
3.01 Mб
Скачать

§ 9. Представление в виде конечного автомата как один из видов динамического представления модели

9.1. Понятие конечного автомата. Определение события и состояния

Конечный автомат (state machine) – это граф состояний и переходов из одного состояния в другое. Как правило, он описывает реакцию экземпляра класса на получаемые им события, но, кроме того, обеспечивает возможность описания динамического поведения вариантов использования, коопераций и методов. По своей сути конечный автомат представляет собой модель возможных жизненных циклов объекта. При этом объект рассматривается как изолированная сущность, а внешние воздействия на него определяются как события. Объект реагирует на события в соответствии с тем состоянием, в котором он находится в настоящий момент. Возможными состояниями могут быть выполнение какого-либо действия или переход в новое состояние. Конечный автомат может быть структурирован, чтобы унаследовать переходы и моделировать с их помощью параллелизм.

Событие – это значимое явление, которое имеет определенное положение во времени и пространстве. Оно происходит в некий момент времени, не имеет продолжительности и влечет за собой определенные последствия. В данном случае под событием мы понимаем обобщенное описание множества сходных единичных событий. Конкретное событие называется экземпляром события и может иметь свои собственные параметры. События делятся на внутренние и внешние, причем те и другие могут быть четырех различных видов: событие сигнала, событие вызова, событие изменения и событие времени (таблица № 6).

Таблица № 6

Виды событий

Вид события

Описание

Синтаксис

Событие сигнала (Signal event)

Получение объектом именованного асинхронного сообщения.

имя события (атрибут:Тип)

Событие вызова (Call event)

Получение объектом явного синхронного запроса в виде вызова его метода.

имя операции (атрибут:Тип)

Событие изменения (Change event)

Изменение значения в логическом выражении.

when(выражение)

Событие времени (Time event)

Наступление абсолютного времени или истечение относительного периода времени.

after(время)

Событие сигнала. Сигнал – это именованная сущность, служащая средством коммуникации между объектами. Получение сигнала является для принимающего объекта событием. Объект-отправитель создает экземпляр сигнала и посылает его одному или нескольким объектам. Сигналы представляют собой односторонний вид коммуникации, при которой объект-отправитель продолжает свою деятельность сразу после передачи сигнала, независимо от принимающего объекта. Для двухсторонней коммуникации используются, по крайней мере, два сигнала (по одному в каждом направлении), причем, и отправлять, и принимать сигнал может один и тот же объект.

Сигналы могут выступать на диаграммах классов в качестве классификаторов. Для них используется стереотип «signal». Параметры сигнала считаются его атрибутами. Будучи классификаторами, сигналы могут вступать в отношения обобщения, быть потомками других сигналов, наследуя при этом параметры своих предков и инициируя такие же переходы состояния, как и сигналы-предки.

Событие вызова – это вызов операции объекта, при котором вызываемая операция реализуется как переход в конечном автомате. Для отправляющего объекта подобный вызов неотличим от вызова метода. Вид реализации вызываемой операции (метод или событие-запуск в конечном автомате) определяется объектом-получателем. Параметры операции в данном случае будут совпадать с параметрами события. Как только принимающий объект заканчивает обрабатывать вызов (запустив или не запустив для этого переход состояния), управление возвращается к объекту-отправителю. В отличие от вызова метода событие вызова допускает параллельную работу принимающего объекта и объекта-отправителя.

Событие изменения – это событие, происходящее, когда становится истинным логическое выражение, зависящее от определенных значений атрибутов. Пользоваться этим видом события следует с осторожностью, так как оно представляет собой длительное и, возможно, нелокальное вычисление. Событие изменения состояния отличается от сторожевого условия (guard condition), являющегося элементом перехода (см. ниже). Сторожевое условие вычисляется один раз, при запуске перехода, когда объект-получатель обрабатывает событие. Если получен ложный результат, то переход не запускается, и сторожевое условие не пересчитывается. В отличие от него изменение состояния вычисляется постоянно, пока не будет получен истинный результат, после чего запускается переход.

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

Состояние. Состояние (state) описывает период времени из жизненного цикла объекта. Оно характеризуется:

  • набором сходных (с какой-либо точки зрения) значений атрибутов объекта;

  • периодом времени, в течение которого объект ожидает наступления события или событий;

  • периодом времени, в течение которого объект осуществляет свою деятельность.

Состояние может иметь имя, однако чаще всего оно просто описывается своими действиями. Состояние изображается на диаграммах в виде прямоугольника с закругленными углами.

Рис.18. Состояние

В конечных автоматах состояния связаны между собой переходами. Переходы соединяют два различных состояния – исходное и целевое (или несколько, в случае если есть развилка или слияние управления). Обработка перехода осуществляется в том состоянии, из которого производится переход. Объект чувствителен к событиям, инициирующим переходы из того состояния, в котором он в данный момент находится.