Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.

signal (сигнал)

Спецификация асинхронной коммуникации между объектами. У сигналов могут быть параметры, выраженные в виде атрибутов.
См. event; message; send.

Семантика

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

Нотация

Для того, что бы показать, что класс или интерфейс принимает сигнал, перед объявлением операции, имеющей имя сигнала, помещается стереотип "signal". В это же объявление входят параметры сигнала, однако возвращаемого типа у него не бывает.
Объявление сигнала можно также обозначить при помощи стереотипа символа класса. Ключевое слово "signal" ставится и прямоугольнике над именем сигнала. Параметры сигнала имеют вид атрибутов и размещаются в разделе для атрибутов. В разделе для операций могут находиться операции доступа.
На рис. 164 изображено использование нотации обобщения для связывания сигнала-потомка и его прямого предка. Потомок наследует параметры своего предка и может добавить к ним свои собственные параметры. Например, сигнал MouseButtonDown (Нажатие кнопки мыши) имеет атрибуты time (время), device (устройство), location (местоположение).
Чтобы использовать сигнал для запуска перехода, нужно использовать следующий синтаксис:
имя-события ( параметрсписок )
Синтаксис параметров имеет следующий вид:
имя-параметра : выражение-типа
Параметр сигнала объявляется как атрибут, имеющий исходно значение, которое может быть переопределено при инициализации или отправке. Исходное значение используется и том случае, если экземпляр сигнала после создания и инициализации отправляется объекту. Если при отправке сигнала используется синтаксис вызова операции исходные значения соответствуют значениям по умолчанию параметров сигнала.

Обсуждение

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

Алфавитный указатель