Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Введение

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

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

UML предоставляет средства для графического представления событий, как видно из рис. 20.1. Такая нотация позволяет визуализировать объявления собы­тий (например, сигнала ТрубкаПовешена) и показать, как наступление события приводит к переключению между состояниями (например, сигнал ТрубкаПове­шена вызывает переход телефона из состояния Активен в состояние Ожидание).

Термины и понятия

Событие (Event) - это описание существенного факта, который занимает неко­торое положение во времени и в пространстве. В контексте автоматов событие - это

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

Виды событий

События могут быть внутренними или внешними. Внешние события передают­ся между системой (см. главу 31) и ее актерами (см. главу 16). Примерами могут служить нажатие кнопки или прерывание от датчика столкновений. Внутренние события передаются между объектами, существующими внутри самой системы. Так, исключение, генерируемое при переполнении, является примером внутрен­него события.

В UML можно моделировать четыре вида событий: сигналы, вызовы, истече­ние промежутка времени и изменение состояния.

Сигналы

Сигнал - это именованный объект, который асинхронно возбуждается одним объектом и принимается (перехватывается) другим. Исключения, которые поддер­живаются в большинстве современных языков программирования, - это наиболее распространенный вид внутренних сигналов, который вам придется моделировать. (Создание и уничтожение объектов - это тоже разновидность сигналов, см. главу 15.)

У сигналов есть много общего с простыми классами (см. главы 4 и 9). Напри­мер, можно говорить об экземплярах сигналов, хотя обычно не возникает необхо­димость моделировать их явно. Сигналы могут также участвовать в отношениях обобщения (см. главы 5 и 10), что позволяет моделировать иерархии событий, в которых одни (например, сигнал СбойСети) являются общими, а другие (напри­мер, специализация события СбойСети под названием ОтказСкладскогоСер-вера) - частными. Как и классы, сигналы могут иметь атрибуты и операции.

Примечание Атрибуты сигнала выступают в роли его параметров. Например, при посылке сигнала Столкновение можно указать значения его атрибутов в виде параметров: Столкновение (3,5).

Сигнал может быть послан как действие перехода (изменения) состояния в ав­томате или как отправка сообщения при взаимодействии. При выполнении опера­ции тоже могут посылаться сигналы. На практике, когда моделируется класс или интерфейс (см. главу 11), важной частью спецификации поведения является указа­ние сигналов, которые он может посылать. В UML связь между операцией и собы­тиями, которые она может посылать, моделируется с помощью отношения зависи­мости (см. главу 5) со стереотипом (см. главу 6) send.

Как показано на рис. 20.2, в UML сигналы (и исключения) моделируются сте­реотипными классами. Для указания на то, что некоторая операция посылает сиг­нал, можно воспользоваться зависимостью со стереотипом send.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]