ПРАТИЧЕСКИЕ РАБОТЫ ДЛЯ СТУДЕНТОВ
специальности: 09.02.03. Программирование в компьютерных системах
по МДК.03.02. Инструментальные средства разработки программного обеспечения
(тема «Построение объектной модели на основе языка UML»)
Цель: изучение средств пакета программ RationalRose, обеспечивающих построение диаграмм использования, взаимодействия, состояний, активности и диаграммы классов; приобретение практических навыков применения этих диаграмм для моделирования поведения проектируемой системы
Практическая работа «Создание диаграмм использования и взаимодействия»
Задание №1. Запустите программу Rational Rose.
Для этого выберите Пуск – Все программы – IBM Rational – IBM Rational Rose Interprise Edition. В появившемся окне выберите Отмена (Cancel).
Постановка задачи (описание предметной области)
Магазин осуществляет продажу товаров клиенту путём оформления документов Заказ. Директор магазина – Антон, принял решение автоматизировать документооборот продаж товаров и пригласил для выполнения работ программиста Павла. Поговорив с Антоном, в соответствие с концепцией жизненного цикла программы Павел приступил к описанию бизнес процессов, сопровождающих продажу товара. Взяв за основу язык UML, он начал с построения диаграммы процессов. Диаграмма должна ответить на вопрос – Что должно делаться в системе и кто участник этих процессов?
Задание №2. Постройте диаграмму вариантов использования и действующих лиц.
Задание №3. Поместите на диаграмму 7 вариантов использования – Ввести новый заказ, Изменить существующий заказ, Напечатать инвентарную опись, Обновить инвентарную опись, Оформить заказ, Отклонить заказ, Выполнить поставку заказа.
Задание №4. Поместите на диаграмму действующие лица – Продавец, Управляющий магазином, Клерк, Бухгалтерская система.
Задание №5. Создайте абстрактный вариант использования – это вариант использования, который не может осуществляться сам по себе, а должен быть более ясно определено в конкретных вариантах использования с помощью связей обобщения, включения и расширения. Для этого щелкните правой кнопкой мыши на варианте использования Отклонить заказ и в контекстном меню выберите пункт Открыть спецификацию (Open Specification). Установите флажок Абстрактный (Abstract).
Задание №6. Добавьте в диаграмму связи коммуникации.

Задание №7. Добавьте на диаграмму связь расширения.

Задание №8. Добавьте описание к варианту использования Ввести новый заказ и к действующему лицу Продавец: Ввести новый заказ – Этот вариант использования даёт клиенту возможность ввести новый заказ в систему; Продавец – Это служащий, старающийся продать товар.
Задание №9. Добавьте еще по одному описанию для любого варианта использования и любого действующего лица.
Согласовав основные бизнес процессы с Антоном, Павел приступил к построению модели бизнес процессов, чтобы ответить на вопрос – Как это должно делаться в системе? Для начала он выбрал наиболее важные вариант использования – Ввести новый заказ и построил для него диаграммы взаимодействия.
Диаграммы взаимодействия включают в себя два типа диаграмм – последовательности и кооперации.
Задание №10. Постройте диаграмму последовательности. Ввод заказа и, дважды щелкнув по ней мышкой, откройте её.
Задание №11. Добавьте на диаграмму действующее лицо Продавец.
Задание №12. Добавьте на диаграмму объекты: Выбор варианта заказа, Форма деталей заказа, Заказ №1234.
Задание №13. Добавьте на диаграмму сообщения согласно рисунку ниже.

Теперь нужно позаботиться об управляющих объектах и о взаимодействии с базой данных. Как видно из диаграммы, объект Форма деталей заказа имеет множество ответственностей, с которыми лучше всего мог бы справиться управляющий объект. Кроме того, новый заказ должен сохранять себя в базе данных сам. Вероятно, эту обязанность лучше было бы переложить на другой объект.
Задание №14. Внесите изменения в диаграмму последовательности согласно рисунку ниже.

Задание №15. Поместите на диаграмму рефлексивное сообщение – сообщение посылаемое объектом самому себе. Для этого выберите на панели инструментов кнопку Сообщение себе (Message to Self) и щелкните на «линии жизни» объекта Управляющий транзакциями ниже сообщения Информация о заказе. Назовите сообщение Сохранить информацию о заказе в базе данных.
Задание №16. Соотнесите объект Выбор варианта заказа с классом Выбор заказа. Для этого, щелкнув правой кнопкой мыши по объекту Выбор варианта заказа, в контекстном меню выберите Открыть спецификацию (Open Specification). В поле Класс (Class) выберите Новый (New) и в появившемся окне в поле Имя (Name) введите Выбор заказа. Нажмите ОК. Убедитесь, что в поле Класс (Class) указано имя нового созданного класса Выбор заказа. Нажмите ОК.

Задание №17. Аналогично соотнесите следующие объекты с классами: Форма деталей заказа – Детали заказа, Управляющий заказами – Упр_заказами, Заказ №1234 – Заказ, Управляющий транзакциями – Упр_транзакциями.
Задание №18. Соотнесите сообщение Создать новый заказ с операцией Создать. Для этого, щелкнув правой кнопкой мыши по сообщению Создать новый заказ, в контекстном меню выберите Новая операция (). В появившемся окне в поле Имя (Name) введите Создать и нажмите ОК. Убедитесь, что над стрелкой сообщения появилась созданная операция.

Задание №19. Аналогично соотнесите следующие сообщения с операциями: Открыть форму – Открыть, Ввести номер заказа, заказчика и число заказываемых предметов – Ввести номер заказа, заказчика и число заказываемых предметов, Сохранить заказ – Сохранить заказ, Создать новый заказ – Создать новый заказ, Информация о заказе – Информация о заказе, Сохранить информацию о заказе в базе данных – Сохранить информацию.
Задание №20. Создайте диаграмму кооперации Ввод заказа и, дважды щелкнув по ней мышкой, откройте её.
Задание №21. Добавьте на диаграмму действующее лицо Продавец.
Задание №22. Добавьте на диаграмму объекты: Выбор варианта заказа, Форма деталей заказа, Заказ №1234.
Задание №23. Добавьте на диаграмму связи согласно рисунку ниже.

Задание №24. Для связей, созданных в предыдущем пункте, добавьте сообщения, используя кнопку Сообщение связи (Link Message) на панели инструментов.

Задание №25. Приведите диаграмму кооперации к виду, представленному на рисунке ниже.

Кнопка Связь с собой (Link to self)
Задание №26. Соотнесите следующие объекты диаграммы с классам, созданными в диаграмме последовательности: Выбор варианта заказа – Выбор варианта, Форма деталей заказа – Детали заказа, Заказ №1234 – Заказ, Управляющий заказами – Упр_заказами, Управляющий транзакциями – Упр_транзакциями.
Задание №27. Соотнесите следующие сообщения с операциями, созданными в диаграмме последовательности: Создать новый заказ – Создать, Открыть форму – Открыть, Ввести номер заказа, заказчика и число заказываемых предметов – Ввести номер заказа, заказчика и число заказываемых предметов, Сохранить заказ – Сохранить заказ, Создать новый заказ – Создать новый заказ, Информация о заказе – Информация о заказе, Сохранить информацию о заказе в базе данных – Сохранить информацию.
Самостоятельное задание. По аналогии с предыдущими заданиями, создайте свои диаграммы использования, последовательности и кооперации для сказки Колобок. Классы и операции назначать не надо!
Ответьте на вопросы (письменно, в тетради).
1. Дайте определение понятию «абстрактный вариант использования».
2. Дайте определение понятию «рефлексивное сообщение».
3. Дайте определение понятию «связь с собой».
4. В каких случаях используется рефлексивное сообщение и связь с собой?
Практическая работа «Создание диаграммы состояний»
Задание №1. Запустите программу Rational Rose и откройте модель, созданную в предыдущей практической работе.
Задание №2. Постройте диаграмму состояний для класса Заказ. Для этого:
Найдите в браузере класс Заказ. Щёлкните правой кнопкой мышки по класса и в контекстном меню выберите Новый (New) – Диаграмма состояний (Statechart Diagram). Введите название диаграммы Заказ.
Дважды щелкнув мышкой по созданной диаграмме, откройте её.
Добавьте начальное и конечное состояние, используя кнопки Начальное состояние (Start State) и Конечное состояние (End State) на панели инструментов.

Поместите на диаграмму суперсостояние Состояние объекта Заказ, используя кнопку Состояние (State) на панели инструментов.

Поместите на диаграмму еще 4 состояния – Отменен, Выполнен, Инициализация, Выполнение заказа приостановлено.

Опишите состояние Инициализация следующим образом: дважды щёлкните мышкой по состоянию Инициализация и в появившемся окне перейдите на вкладку Действия (Actions); щёлкните правой кнопкой мыши и в контекстном меню выберите Вставить (Insert); дважды щёлкните на новом действии и назовите его Сохранить заказ; в поле Когда (When) выберите На входе (On Entry) – OK.
Аналогично добавьте на диаграмму остальные состояния. Обратите внимание на значения, указываемы в поле Когда (When)!!!

Добавьте на диаграмму переходы согласно рисунку ниже, используя кнопки Переход (State Transition) и Переход к себе (Transition to Self) на панели инструментов.

Опишите переход от состояния Инициализация к состоянию Выполнение заказа приостановлено следующим образом: дважды щёлкните мышкой по переходу и в появившемся окне в поле Событие (Event) введите Выполнить заказ и щёлкните OK.
Аналогично поместите на диаграмму остальные события согласно рисунку ниже.

Задание №3. По аналогии с предыдущим заданием, создайте свою диаграмму состояний.
Практическая работа. Построение диаграммы Активности для варианта использования «Выполнить поставку Заказа».
Постановка задачи:
Побеседовав с Павлом, Антон понял, что необходимо согласовать логику реализации еще одного варианта использования «Выполнить поставку заказа». Стало ясно, что здесь возможны несколько альтернативных потоков управления. Для таких ситуаций более удобно использовать не диаграммы взаимодействия, приспособленные для единственного потока, а диаграмму активности.
Описание варианта использования.
При оформлении заказа проверяют каждую содержащуюся в нем позицию, чтобы убедиться в наличии соответствующих товаров на складе. После этого выписываются товары для реализации заказа. Во время выполнения этих процедур одновременно проверяется прохождение платежа. Если платеж прошел, и товары имеются на складе, то осуществляется их поставка. Если платеж прошел, но товары на складе отсутствуют, то заказ ставится в ожидание. Если платеж не прошел, то заказ аннулируется.
Задание №1. Создайте диаграмму активности для варианта использования Выполнить поставку заказа.
1. Найдите в браузере вариант использования Выполнить поставку заказа.
2. Щелкните на классе правой кнопкой мыши и в открывшемся меню укажите пункт New - Activity Diagram (Создать диаграмму активности).
3. Назовите диаграмму Выполнить поставку и откройте ее двукратным щелчком мыши
4. На панели инструментов щелкните мышкой на элементе Swimlane, затем на поле диаграммы. На диаграмме появится разделительная линия («водная дорожка»).
5. Установите курсор на заголовок NewSwimlane и нажмите левую клавишу мыши два раза. В появившемся окне в поле Name введите Система, Class - Бухгалтерская система.
6. Аналогично создайте еще одну вводную дорожку, присвоив ей имя Клерк, класс – Клерк магазина.
7. Дополнительно диаграмму элементами согласно рисунку ниже.

Задание №2. Создайте свою диаграмму активности.
Практическая работа. Создание диаграмм классов.
Задание №1. Создайте диаграмму классов для отображения пакетов. Для этого:
Щелкните правой кнопкой мыши на логическом представлении (Logical View) в браузере.
В контекстном меню выберите пункт Новый (New) – Пакет (Package).
Назовите новый пакет Сущности.
Аналогично создайте пакеты Границы и Управление.
Задание №2. Создайте главную диаграмму классов. Для этого:
Дважды щелкнув мышью на главной диаграмме классов (Logical View – Main), откройте её.
Перетащите пакет Сущности из браузера на диаграмму.
Перетащите пакеты Границы и Управление из браузера на диаграмму. Главная диаграмма классов должна выглядеть, как показано на рисунке ниже.

Задание №3. Создайте диаграмму классов для варианта использования Ввести новый заказ с отображением всех классов. Для этого:
Щелкните правой кнопкой мыши на логическом представлении в браузере.
В контекстном меню выберите пункт Новый (New) – Диаграмма классов (Class Diagram).
Назовите новую диаграмму классов Ввод нового заказа.
Дважды щелкнув мышью на этой диаграмме в браузере, откройте её.
Перетащите из браузера все классы Выбор заказа, Детали заказа, Упр_заказами, Заказ, Упр_транзакциями.
Задание №4. Объедините классы в пакеты. Для этого:
В браузере перетащите класс Выбор заказа на пакет Границы.
Перетащите класс Детали заказа на пакет Границы.
Перетащите классы Упр_заказами и Упр_транзакциями на пакет Управление.
Перетащите класс Заказ на пакет Сущности.
Задание №5. Добавьте диаграммы классов к каждому пакету. Для этого:
В браузере щелкните правой кнопкой мыши на пакете Границы.
В открывшемся меню выберите пункт Новый (New) – Диаграмма классов (Class Diagram).
Введите имя новой диаграммы Main (Главная).
Дважды щелкнув мышью на этой диаграмме, откройте её.
Перетащите на нее из браузера классы Выбор заказа и Детали заказа.
Закройте диаграмму.
Аналогично создайте диаграмму классов: для пакета Сущности и перетащите в неё класс Заказ; для пакета Управления и перетащите в неё классы Упр_заказами и Упр_транзакциями
Постановка задачи
Для определения атрибутов классов был проанализирован поток событий. В результате к классу Заказ диаграммы классов были добавлены атрибуты Номер заказа и Имя клиента. Так как в одном заказе можно указать большое количество товаров и у каждого из них имеются свои собственные данные и поведение, было решено моделировать товары как самостоятельные классы, а не как атрибуты класса Заказ.
Задание №6. Добавьте атрибуты и операции к классам диаграммы классов Ввод нового заказа. При этом используйте специфические для языка особенности. Установите параметры так, чтобы показывать все атрибуты, все операции и их сигнатуры. Для этого:
Настройка
В меню модели выберите Инструменты (Тооls) – Параметры (Options).
Перейдите на вкладку Диаграммы (Diagram).
Убедитесь, что установлены следующие флажки Показать видимость (Show visibility), Показать стереотипы (Show stereotyps), Показать сигнатуры операций (Show operation signatures), Показать все атрибуты (Show all attributes), Показать все операции (Show all operations).
Убедитесь, что флажки Подавить атрибуты (Suppress attributes) и Подавить операции (Suppress operations) сброшены.
Перейдите на вкладку Нотация (Notation).
Убедитесь, что флажок Отображать пиктограммы (Visibility as icons) сброшен.
Добавление нового класса
Найдите в браузере диаграмму классов варианта использования Ввести новый заказ.
Дважды щелкнув мышью на диаграмме, откройте её.
Нажмите кнопку С1аss на панели инструментов.
Щелкните мышью внутри диаграммы, чтобы поместить туда новый класс.
Назовите его Заказ.
Назначьте этому классу стереотип Entity.
В браузере перетащите класс в пакет Сущности.
Добавление атрибутов
Щелкните правой кнопкой мыши на классе Заказ.
В открывшемся меню выберите пункт Создать атрибут (New Attribute) и введите новый атрибут: OrderNumber: Integer.
Аналогично введите следующие атрибуты: CustomerName: String, OrderDate: Date, OrderFillDate: Date. Если тип атрибута не появляется в выпадающем списке, то введите его от руки и он далее будет появляться.
Самостоятельно добавьте на диаграмму следующие классы с атрибутами: Позиц_заказа (ItemID: Integer, ItemDescription : String); Выбор заказа; Детали заказа; Упр_заказами и Упр_транзакциями.
Добавление операций к классу Позиц_заказа
Щелкните правой кнопкой мыши на классе Позиц_заказа.
В открывшемся меню выберите пункт Создать операцию (New Opration).
Введите новую операцию Создать().
Аналогично введите еще две операции: Взять информацию(), Дать информацию().
Подробное описание операций с помощью браузера
Найдите в браузере класс Позиц_заказа.
Раскройте этот класс, щелкнув на значке "+" рядом с ним. В браузере появятся атрибуты и операции класса.
Дважды щелкнув мышью на операции Дать информацию(), откройте окно её спецификацию.
В раскрывающемся списке Return Type укажите String.
Щелкнув мышью на кнопке ОК, закройте окно спецификации операции. Убедитесь, что имя операции Дать информацию преобразовалось к следующему виду Дать информацию: String.
Дважды щелкните в браузере на операции Взять информацию() класса Позиц_заказа, чтобы открыть окно её спецификации.
В раскрывающемся списке Return Type укажите Воо1еаn.
Перейдите на вкладку Подробно (Detail).
Щелкните правой кнопкой мыши в области аргументов, чтобы добавить туда новый параметр. В открывшемся меню выберите пункт Вставить (Insert) и измените имя аргумента на OrderNumber.
Щелкните на колонке Тип (Туре). В раскрывающемся списке типов выберите Integer.
Щелкните на колонке По умолчанию (Default), чтобы добавить значение аргумента по умолчанию. Введите число 0.
Нажав на кнопку ОК, закройте окно спецификации операции.
Аналогично добавьте еще три аргумента для класса Позиц_заказа: CustomerName: String, OrderDate: Date, OrderFillDate:Date.
Аналогично преобразуйте операцию Создать() класса Позиц_заказа к следующему виду Создать (): Boolean.
Используя браузер или диаграмму классов, введите следующие операции для классов:
- Детали заказа (Открыть() : Boolean, Сохранить заказ() : Boolean);
- Выбор заказа (Создать() : Воо1еаn);
- Упр_заказами(Сохранить заказ(OrderID : Integer) : Воо1еаn);
- Упр_транзакциями (Сохранить заказ(OrderID : Integer) : Boolean, Сохранить информацию() : Integer).
Постановка задачи
Чтобы найти связи, были просмотрены диаграммы Последовательности. Все взаимодействующие там классы нуждались в определении соответствующих связей на диаграммах Классов. После обнаружения связи были добавлены на диаграммы классов.
Задание №7. Добавьте связи к классам, принимающим участие в варианте использования Ввести новый заказ. Для этого:
Настройка
Найдите в браузере диаграмму классов Ввести новый заказ и, дважды щелкнув на диаграмме, откройте её.
Проверьте, имеется ли в панели инструментов диаграммы кнопка Однонаправленная ассоциация (Unidirectional Association). Если её нет, продолжите настройку, выполнив шаги 4 и 5. Если есть, приступайте к выполнению самого упражнения.
Щелкните правой кнопкой мыши на панели инструментов диаграммы и в открывшемся меню выберите пункт Настроить (Customize).
Добавьте на панель кнопку Создать однонаправленную ассоциацию (Creates A Unidirectional Association).
Добавление ассоциаций
Нажмите кнопку Однонаправленная ассоциация (Unidirectional Association) на панели инструментов.
Проведите ассоциацию от класса Выбор заказа к классу Детали заказа.
Аналогично создайте остальные ассоциации согласно рисунку ниже.

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