В окружающем нас мире события зачастую происходят одновременно друг с другом и при этом совершенно внезапно. Подобные
вещи, "которые случаются", называются событиями.
В терминологии конечных автоматов события моделируют явления взаимодействия, которые могут стать непосредственной
причиной изменения состояния. События могут представлять собой сигналы, вызовы, истечения интервалов времени и
изменения состояний. События делятся на синхронные и асинхронные.
Сигнал - это разновидность события, представляющая собой явление асинхронного взаимодействия между двумя субъектами.
События могут быть внешними и внутренними. Внешними называются события, происходящие между системой и ее субъектами.
Внутренними называются события, происходящие между объектами системы. Разделяют четыре вида событий: сигналы, вызовы,
истечения интервалов времени и изменения состояний.
Сигнал - это объект, который в асинхронном режиме передается одним объектом и принимается другим. Примерами сигналов
могут служить исключительные ситуации.
У сигналов могут быть экземпляры, хотя их очень редко моделируют явно. Сигналы могут применяться в отношениях обобщения
для моделирования иерархической структуры событий.
У сигналов могут быть атрибуты и операции. Параметрами сигнала служат его атрибуты.
Сигнал может быть отправлен в форме изменения состояния конечного автомата или в форме отправки сообщения. Сигналы
могут также подаваться в ходе выполнения операций. Важная составляющая моделирования классов и интерфейсов заключается
в описании сигналов, которые могут подаваться ими во время работы. Взаимосвязь между операцией и событиями, которые она
может генерировать, моделируется с помощью отношения зависимости в стереотипе <<send>>.
Если событие сигнала представляет собой подачу сигнала, событие вызова представляет собой вызов операции. В обоих
случаях событие может привести к изменению состояния конечного автомата.
Тогда как сигналы представляют собой асинхронные события, вызовы, как правило, являются синхронными. Это значит, что
когда объект вызывает операцию в отношении другого объекта, управление передается от отправителя к получателю на все
время выполнения операции, а по ее завершении возвращается отправителю. Моделируются вызовы так же, как события
сигналов. В обоих случаях событие вместе с параметрами показано в качестве триггера для изменения состояния.
Хотя между сигналами и событиями вызова нет внешних различий, разница будет видна в классе получателя, поскольку в нем
будет объявлена операция, применяемая для обработки события вызова. Если речь идет о сигнале, вместо данной операции
будет изменение состояния конечного автомата, вызванное сигналом.
Событие времени соответствует истечению определенного интервала времени. События времени применяются для синхронизации
зависимых по времени компонентов системы с помощью общих часов. Событие изменения представляет собой изменение
состояния системы или выполнение какого-либо условия.
События сигналов и вызовов затрагивают как минимум два объекта: отправителя и получателя. Отправка сигнала заключается
в том, что отправитель подает сигнал, а затем продолжает работу, не ожидая ответа от получателя. Операция вызова
отличается от сигнала тем, что отправитель дожидается ответа от получателя, и только после этого продолжает выполнение
работы. Поэтому операции, как правило, применяются для описания "блокирующего" поведения системы (когда система
приостанавливает выполнение других операций) в отличие от сигналов, применяемых для описания "неблокирующего" поведения
системы.
Отправка сигнала нескольким объектам одновременно называется групповой рассылкой и реализуется в виде отправки сигнала
контейнеру, содержащему множество получателей. Отправка сигнала всем объектам системы называется широковещательной
рассылкой и реализуется в виде отправки сигнала объекту, представляющему систему в целом. Этот объект "системы", в свою
очередь, использует механизм распределения сообщений, обеспечивающий доставку сигнала всем объектам системы.
|