учебники, программирование, основы, введение в,

 

Разработка диаграммы кооперации и редактирование свойств ее элементов

Особенности разработки диаграмм кооперации в среде IBM Rational Rose 2003
Диаграмма кооперации является разновидностью диаграммы взаимодействия, и в контексте языка UML описывает динамический аспект взаимодействия объектов при реализации отдельных вариантов использования. Общие рекомендации по построению диаграммы кооперации были рассмотрены в лекции 7 курса «Основы объектно-ориентированного моделирования в нотации UML». Активизировать рабочее окно диаграммы кооперации в программе IBM Rational Rose 2003 можно несколькими способами:

  • Щелкнуть на кнопке с изображением диаграммы взаимодействия на стандартной панели инструментов и выбрать для построения новую диаграмму кооперации.
  • Выполнить операцию главного меню: BrowseInteraction Diagram (БраузерДиаграмма взаимодействия) и выбрать для построения новую диаграмму кооперации.
  • Выполнить операцию контекстного меню: NewCollaboration Diagram (НоваяДиаграмма кооперации) для логического представления или представления вариантов использования в браузере проекта.

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


Таблица 7.1. Назначение кнопок специальной панели инструментов диаграммы кооперации

Графическое изображение

Всплывающая подсказка

Назначение кнопки

Selection Tool

Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме

Text Box

Добавляет на диаграмму текстовую область

Note

Добавляет на диаграмму примечание

Anchor Note to Item

Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы

Object

Добавляет на диаграмму объект

Class Instance

Добавляет на диаграмму экземпляр класса

Object Link

Добавляет на диаграмму связь

Link To Self

Добавляет на диаграмму рефлексивную связь

Link Message

Добавляет на связь диаграммы прямое сообщение

Reverse Link Message

Добавляет на связь диаграммы обратное сообщение

Data Token

Добавляет на связь диаграммы элемент прямого потока данных

Reverse Data Token

Добавляет на связь диаграммы элемент обратного потока данных

На специальной панели инструментов по умолчанию присутствуют практически все кнопки с пиктограммами элементов, которые могут быть использованы для построения диаграммы. В данной лекции в качестве примера рассматривается процесс построения диаграммы кооперации, которая представляет собой реализацию варианта использования Снятие наличных по кредитной карточке применительно к разрабатываемому проекту системы управления банкоматом. В модели данная диаграмма кооперации соответствует этому варианту использования и может быть размещена в представлении вариантов использования (Use Case View). После активизации новой диаграммы кооперации одним из описанных выше способов следует в качестве имени данной диаграммы задать: Снятие наличных по кредитной карточке.
В общем случае работа с диаграммой кооперации состоит в добавлении объектов, связей и сообщений, а также редактировании их свойств. При этом изменения, вносимые в диаграмму кооперации, автоматически вносятся в диаграмму последовательности, что можно увидеть в любой момент, активизировав последнюю нажатием клавиши <F5>.

Добавление объекта на диаграмму кооперации и редактирование его свойств
Добавить объект на диаграмму кооперации можно стандартным образом с помощью соответствующей кнопки на специальной панели инструментов. Однако, в случае наличия построенной ранее диаграммы классов, более удобным представляется следующий способ. В браузере проекта выделить необходимый класс и, удерживая нажатой левую кнопку мыши, перетащить изображение пиктограммы класса из браузера на свободное место рабочего листа диаграммы кооперации. В результате этих действий на диаграмме кооперации появится изображение объекта с именем класса и маркерами изменения его геометрических размеров
По умолчанию каждый добавляемый объект считается анонимным. При необходимости можно задать собственное имя объекта, для чего двойным щелчком на изображении объекта на диаграмме кооперации следует вызвать диалоговое окно свойств этого объекта
Как видно из рассмотрения этого окна свойств, для объекта выбранного класса можно задавать: собственное имя объекта, особенности его реализации и множественность экземпляров.
Группа свойств Persistence (Устойчивость) предназначена для спецификации устойчивости объектов соответствующего класса. При этом свойство Persistent (Устойчивый) означает, что информация об объектах данного класса должна быть сохранена в системе некоторым подходящим способом. Свойство Static (Статический) означает, что соответствующий объект сохраняется в памяти компьютера в течение всего времени работы программного приложения. Свойство Transient (Временный) соответствующий объект хранится в памяти компьютера в течение короткого времени, необходимого только для выполнения его операций. Применительно к рассматриваемой для объекта класса Устройство чтения карточки модели следует выбрать свойство Persistent.
При необходимости можно представить объект в форме мультиобъекта. Для этого следует выбрать отметку у свойства Multiple instances (Несколько экземпляров). Однако для объекта класса Устройство чтения карточки это свойство следует оставить пустым, поскольку данный объект присутствует в модели в единственном экземпляре.

Добавление связи и редактирование ее свойств

Для добавления связи между предварительно размещенными на диаграмме объектами нужно с помощью левой кнопки мыши нажать кнопку с изображением связи на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении одного объекта на диаграмме и отпустить ее на изображении другого объекта. В результате этих действий на диаграмме появится изображение связи, например, соединяющей объект класса Клиент Банкомата (актера) с объектом класса Устройство чтения карточки. Поскольку кнопка с изображением актера отсутствует на специальной панели инструментов диаграммы кооперации, соответствующий объект следует предварительно поместить на диаграмму способом перетаскивания пиктограммы актера из браузера проекта.
По умолчанию каждая добавляемая связь считается анонимной. При необходимости можно задать имя связи с помощью диалогового окна спецификации свойств данной связи.
Кроме имени связи можно также задать: имя ассоциации, видимость соответствующей пары объектов и наличие общих ролей. Однако более важной представляется следующая вкладка Messages (сообщения), служащая для спецификации сообщений, передаваемых между соответствующей парой объектов.
Добавление сообщения и редактирование его свойств
Добавить сообщения на диаграмму кооперации можно несколькими способами. Стандартный способ заключается в использовании кнопки с пиктограммой сообщения на специальной панели инструментов. В этом случае необходимо левой кнопкой мыши нажать кнопку с изображением прямого или обратного сообщения на специальной панели инструментов, отпустить левую кнопку мыши, щелкнуть левой кнопкой мыши на изображении линии связи на диаграмме и отпустить ее. В результате этих действий на диаграмме рядом с линией связи появится изображение стрелки сообщения.
Однако более удобным представляется способ добавления сообщений с помощью диалогового окна свойств связей. Для этого двойным щелчком на линии связи вызывается окно ее свойств и раскрывается вкладка Messages (сообщения). После этого следует выполнить операцию контекстного меню Insert To (Вставить в направлении), в результате чего появляется вложенный список с предложением выбрать одну из операций целевого класса для спецификации имени сообщения
Для рассматриваемой модели банкомата для первого сообщения следует выбрать операцию прочитать идентификатор карточки(). После выбора операции для данного сообщения оно добавляется в список сообщений данной связи, а рядом с линией связи на диаграмме кооперации появится стрелка с номером и именем этого сообщения Кроме имени сообщения можно также задать стереотип синхронизации и частоту передачи. Для этой цели следует воспользоваться диалоговым окном спецификации свойств сообщений, которое можно открыть двойным щелчком на имени сообщения в списке рассматриваемой вкладки Messages окна спецификации свойств связи.
Группа свойств Synchronization (Синхронизация) предназначена для определения способа синхронизации передаваемого сообщения. При изменении этого свойства изменяется графическое изображение стрелки соответствующего сообщения. Характеристика отдельных свойств синхронизации сообщений и графическое изображение соответствующих стрелок сообщений приводится в следующей таблице (табл. 7.2).


Таблица 7.2. Характеристика свойств синхронизации сообщений

Название свойства

Графическое изображение стрелки

Назначение свойства

Simple (Простое)

Данное сообщение выполняется в одном потоке управления. Это свойство задается добавляемому на диаграмму сообщению по молчанию

Synchronous (Синхронное)

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

Balking (С отказом)

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

Timeout (С ожиданием)

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

Procedure Call (Вызов процедуры)

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

Asynchronous (Асинхронное)

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

Return (Возврат)

Данное сообщение посылается клиенту после окончания выполнения вызова процедуры

Группа свойств Frequency (Частота) предназначена для указания периодического характера передачи сообщения. При изменении этого свойства графическое изображение стрелки соответствующего сообщения не изменяется. Свойство Aperiodic (Апериодическое) означает, что сообщение посылается клиентом нерегулярно. При этом сообщение может быть отправлено один или несколько раз через различные промежутки времени. Это свойство задается для сообщения по умолчанию. Свойство Periodic (Периодическое) означает, что сообщение регулярно посылается клиентом через определенные промежутки времени.
Применительно для модели банкомата можно оставить рассмотренные свойства сообщений без изменения, в том виде, в каком они определены по умолчанию программой IBM Rational Rose 2003.


Окончательное построение диаграммы кооперации для модели банкомата
Для завершения построения диаграммы кооперации рассматриваемого примера следует описанным выше способом добавить оставшиеся объекты, связи и сообщения. С этой целью следует выполнить следующие действия:
  1. Добавить объекты классов с именами: Контроллер Банкомата, Транзакция Банкомата, Клавиатура Банкомата, Экран Банкомата, Принтер Банкомата, Устройство выдачи наличных и IИнтерфейс Банка.
  2. Добавить связи, соединяющие объекты классов с именами: Контроллер Банкомата с Устройством чтения карточки, Контроллер Банкомата с Транзакцией Банкомата, Контроллер Банкомата с Клавиатурой Банкомата, Контроллер Банкомата с Экраном Банкомата, Контроллер Банкомата с Принтером Банкомата, Контроллер Банкомата с Устройством выдачи наличных и Контроллер Банкомата с IИнтерфейсом Банка.
  3. Добавить сообщение: проверить идентификатор карточки (Integer) , направленное от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.
  4. Добавить сообщение: ввести ПИН-код(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.
  5. Добавить сообщение: прочитать ПИН-код(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.
  6. Добавить сообщение: создать новую транзакцию(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.
  7. Добавить сообщение: проверить правильность ПИН-кода(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.
  8. Добавить сообщение: показать меню опций(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.
  9. Добавить сообщение: ввести тип транзакции(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.
  10. Добавить сообщение: показать меню снятия суммы(), направленное от объекта класса Контроллер Банкомата к объекту класса Экран Банкомата.
  11. Добавить сообщение: ввести сумму снятия наличных(), направленное от объекта класса-актера Клиент Банкомата к объекту класса Клавиатура Банкомата.
  12. Последовательно добавить 3 сообщения: открыть счет клиента (Integer) , проверить баланс клиента (Integer, Currency) и уменьшить счет клиента(Integer, Currency), направленные от объекта класса Контроллер Банкомата к объекту класса IИнтерфейс Банка.
  13. Добавить сообщение: распечатать чек(), направленное от объекта класса Контроллер Банкомата к объекту класса Принтер Банкомата.
  14. Добавить сообщение: вернуть кредитную карточку(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство чтения карточки.
  15. Добавить сообщение: выдать наличные(), направленное от объекта класса Контроллер Банкомата к объекту класса Устройство выдачи наличных.
  16. Добавить сообщение: завершить транзакцию(), направленное от объекта класса Контроллер Банкомата к объекту класса Транзакция Банкомата.

Диаграмма кооперации, описывающая реализацию типичного хода событий варианта использования Снятие наличных по кредитной карточке для проекта системы управления банкоматом, показана
При необходимости можно изменить порядок следования сообщений и их спецификацию, а также установить дополнительную синхронизацию сообщений и связать с сообщениями примечания. Указанные действия, а также построение диаграмм кооперации, описывающих реализации исключений для варианта использования Снятие наличных по кредитной карточке и других вариантов использования, предлагается выполнить читателям самостоятельно в качестве упражнения.
В заключение этой лекции следует заметить, что среди свойств сообщений в среде IBM Rational Rose 2003 отсутствует сторожевое условие. Этот факт может несколько озадачить разработчиков, поскольку в общем случае приводит к увеличению количества диаграмм кооперации в модели проекта. В качестве выхода из данной ситуации можно рекомендовать указывать при необходимости сторожевое условие в качестве предусловия для соответствующей операции класса.

 

 
На главную | Содержание | < Назад....Вперёд >
С вопросами и предложениями можно обращаться по nicivas@bk.ru. 2013 г.Яндекс.Метрика