Студопедия

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника



Билет 24.




Читайте также:
  1. БИЛЕТ -1
  2. Билет 1
  3. Билет 1
  4. Билет 1
  5. БИЛЕТ 1
  6. Билет 1
  7. Билет 1
  8. Билет 1
  9. Билет 1
  10. Билет 1

1. Динамическое поведение объектов. Состояния, события, сигналы и сообщения. Модели взаимодействия объектов.

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

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

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

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

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

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



Обратные вызовы позволяют проинформировать объект-отправитель о завершении обработки сообщения путем передачи ему асинхронного сообщения (рис. 1.24 г.). Перед выполнением вызова объекту-получателю сообщается адрес некоторой функции обратного вызова (callback function) объекта-отправителя. По завершении обработки сообщения выполняется обратный вызов.

Автосообщения предназначены для передачи объектом сообщений самому себе. В этом случае происходит локальный вызов – один метод вызывает другой метод одного и того же объекта. Само название автосообщение заимствовано из языка SmallTalk. Применительно к объекту в языках C++ и Java автосообщению соответствует термин this, а в языке Object Pascal – self. Соответствующий объект представляет собой константу, которая хранит идентификатор объекта OID. При необходимости автообъект может быть передан как аргумент в сообщении.

 

  а). Односторонний вызов.   б). Синхронный вызов.
  в). Отсроченный синхронный вызов. г). Обратный вызов.  

Рис. 1.24. Способы синхронизации объектов.



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

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

Используются следующие обозначения для моделирования действий:

1. "call" (вызвать) – сообщение, требующее вызова операции или процедуры принимающего объекта. Если сообщение с таким стереотипом рефлексивное, то оно инициирует локальный вызов операции у пославшего это сообщение объекта;

2. "return" (возвратить) – сообщение, возвращающее значение выполненной операции вызвавшему ее объекту;

3. "create" (создать) – сообщение, требующее создания другого объекта для выполнения определенных действий. Созданный объект может получить фокус управления;

4. "destroy" (уничтожить) – сообщение с требованием уничтожить соответствующий объект. Посылается в том случае, когда объект больше не нужен и должен освободить задействованные им системные ресурсы;



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

Наряду с сообщениями в UML определены понятия события и сигнала. Событием является сообщение, при получении которого объектом происходит изменение его внутреннего состояния. Сигнал является событием особого рода, при котором событие передается асинхронно от одного объекта к другому. Если говорить точнее, сигнал – именованный объект, асинхронно возбуждаемый одним объектом и принимаемый другим. Примером могут служить объекты исключений, которые поддерживаются в ряде объектно-ориентированных языках программирования для обработки ошибок.


Дата добавления: 2015-04-21; просмотров: 5; Нарушение авторских прав







lektsii.com - Лекции.Ком - 2014-2022 год. (0.01 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты