Концепция: События и сигналы
Событие - это существенное изменение обстоятельств, происшедшее в конкретный момент времени в конкретном месте. Сигнал - это разновидность события, представляющая собой явление асинхронного взаимодействия между двумя объектами.
Взаимосвязи
Основное описание

Введение

В окружающем нас мире события зачастую происходят одновременно друг с другом и при этом совершенно внезапно. Подобные вещи, "которые случаются", называются событиями.

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

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

Виды событий

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

Сигналы

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

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

У сигналов могут быть атрибуты и операции. Параметрами сигнала служат его атрибуты.

Сигнал может быть отправлен в форме изменения состояния конечного автомата или в форме отправки сообщения. Сигналы могут также подаваться в ходе выполнения операций. Важная составляющая моделирования классов и интерфейсов заключается в описании сигналов, которые могут подаваться ими во время работы. Взаимосвязь между операцией и событиями, которые она может генерировать, моделируется с помощью отношения зависимости в стереотипе <<send>>.

События вызова

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

Тогда как сигналы представляют собой асинхронные события, вызовы, как правило, являются синхронными. Это значит, что когда объект вызывает операцию в отношении другого объекта, управление передается от отправителя к получателю на все время выполнения операции, а по ее завершении возвращается отправителю. Моделируются вызовы так же, как события сигналов. В обоих случаях событие вместе с параметрами показано в качестве триггера для изменения состояния.

Хотя между сигналами и событиями вызова нет внешних различий, разница будет видна в классе получателя, поскольку в нем будет объявлена операция, применяемая для обработки события вызова. Если речь идет о сигнале, вместо данной операции будет изменение состояния конечного автомата, вызванное сигналом.

События времени и изменений

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

Отправка и получение событий

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

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