- •Методичні вказівки
- •Частина 1
- •1 Лабораторна робота №1
- •2 Лабораторна робота № 2
- •2.1 Мета роботи....................................................................46
- •3 Лабораторна робота № 3
- •3.1 Мета роботи....................................................................66
- •1.2 Основні теоретичні відомості
- •1.2.1 Призначення діаграми класів
- •1.2.2 Концепція об’єкту та класу
- •1 Лабораторна робота № 1 Діаграми класів
- •1.1 Мета роботи
- •1.2.2.2 Класи
- •1.2.2.2.3 Атрибути класу
- •1.2.2.2.4 Операції класу
- •1.2.3 Концепція зв’язку та асоціації
- •1.2.3.1 Зв’язки та асоціації
- •1.2.3.2 Види асоціацій
- •1.2.3.3 Кратність
- •1.2.3.4 Ім’я полюсів асоціації
- •1.2.3.5 Упорядкування
- •1.2.3.6 Мультимножини та послідовності
- •1.2.3.7 Кваліфіковані асоціації
- •1.2.4 Створення діаграми класів
- •1.2.4.1 Строка інструментів
- •Interface (інтерфейс)
- •1.2.4.2 Контекстне меню класу
- •1.2.4.3 Специфікації класу
- •1.2.5 Приклад виконання
- •1.3 Завдання на лабораторну роботу
- •1.5 Приклади індивідуальних завдань
- •1.6 Контрольні запитання
- •Лабораторна робота № 2 Діаграми послідовностей
- •2.1 Мета роботи
- •2.2 Основні теоретичні відомості
- •2.2.1 Призначення діаграми послідовностей
- •2.2.2.1 Лінія життя об’єкта
- •2.2.2.2 Налаштування часу життя об’єкту
- •2.2.3 Фокус керування
- •2.2.4 Створення повідомлень
- •2.2.4.1 Властивості повідомлень
- •2.2.5 Створення діаграми послідовностей
- •2.2.5.1 Строка інструментів
- •2.2.6 Приклад виконання
- •2.3 Завдання на лабораторну роботу
- •2.5 Контрольні запитання
- •3 Лабораторна робота № 3 Діаграми кооперації
- •Мета роботи
- •Основні теоретичні відомості
- •3.2.1 Призначення діаграми кооперації
- •3.2.2.1 Мультиоб’єкт
- •3.2.2.2 Активні та пасивні об’єкти
- •3.2.2.3 Контекстне меню об’єкту
- •3.2.2.4 Налаштування області видимості об’єктів
- •3.2.3 Зв’язки
- •3.2.3.1 Стереотипи зв’язків
- •3.2.4 Повідомлення
- •3.2.5 Створення діаграми кооперації
- •3.2.5.1 Строка інструментів
- •3.2.6 Приклад виконання
- •3.3 Завдання на лабораторну роботу
- •3.5 Контрольні запитання
- •Рекомендована література
1.2.5 Приклад виконання
Необхідно розробити діаграму класів інтернет-магазину одягу. Необхідно змоделювати роботу користувачів інтернет-магазину з каталогом одягу. До користувачів інтернет-магазину будуть відноситися: потенційні покупці та адміністратор інтернет-магазину. Каталог одягу інтернет-магазину буде містити інформацію про одяг.
Рекомендації. Для спрощення моделювання необхідно створити клас, який буде містити загальну спільну інформацію класів потенційних покупців та адміністратора.
Реалізація.
1. Спочатку треба створити діаграму класів. В браузері необхідно виконати наступну послідовність дій: Logical view => New => Class Diagram (рис 1.2.34).
Рисунок 1.2.34 – Створення діаграми класів
2.
На створеній діаграмі класів необхідно
розмістити класи за допомогою значка
на панелі інструментів. На діаграмі
будуть знаходитися наступні класи:
«Clothes»
(«Одяг»), «Catalog»
(«Каталог»), «User»
(«Користувач»), «Customer»
(«Покупець»), «Administartor»
(«Адміністратор») та «Person»
(«Людина»). Розташування класів на
діаграмі зображено на рис. 1.2.35.
Рекомендації. Ім’я класів, атрибутів та операцій краще записувати латиницею для спрощення в подальшому генерації коду класу.
Рисунок 1.2.35 – Класи на діаграмі
3. Кожному класу необхідно присвоїти атрибути. Для створення атрибутів необхідно клікнути правою кнопкою миші по класу та у контекстному меню обрати опцію New Attribute. Потім ввести необхідне ім’я атрибуту (рис. 1.2.36). Для редагування інформації про атрибут необхідно клікнути правою кнопкою миші по класу та у контекстному меню обрати опцію Open Specification… Далі перейти на вкладку Attributes та клікнути правою кнопкою миші по необхідному атрибуту. У контекстному меню необхідно обрати опцію Specification… . На вкладці General необхідно проставити тип атрибуту у полі Type.
Рисунок 1.2.36 – Класи з атрибутами
4. Кожному класу необхідно присвоїти операції. Для створення операцій необхідно клікнути правою кнопкою миші по класу та у контекстному меню обрати опцію New Operation і ввести необхідне ім’я операції (рис. 1.2.37).
Для редагування інформації про операції необхідно клікнути правою кнопкою миші по класу та у контекстному меню обрати опцію Open Specification… Далі перейти на вкладку Operations та клікнути правою кнопкою миші по необхідній операції. У контекстному меню необхідно обрати опцію Specification… . На вкладці General необхідно проставити тип повертаємого значення операції у полі Return Type та доступ до методу у полі Export Control.
Рисунок 1.2.37 – Класи з атрибутами та операціями
5.
Між усіма класами необхідно розмістити
зв’язки (рис. 1.2.38). «Clothes»
входить до «Catalog»,
але може існувати і без нього, тому їх
зв’язує відношення агрегації. Для цього
необхідно розмістити зв’язок асоціації
за допомогою інструмента
між класами «Clothes»
та «Catalog»,
у його властивостях на вкладці Role
A
Detail
зняти позначку «Navigable»
та відмітити «Aggregate».
На вкладці General
вказати ім'я зв’язку «include».
Далі зробимо існуючу асоціацію
кваліфікованою, щоб відрізняти об’єкти
класу «Clothes»
один від одного. Для цього на вкладці
Role B
Detail
у полі Keys/Qualifiers
натискаємо правою
кнопкою миші та вводимо ім’я кваліфікатора
– «clothesID».
На цій же вкладці у полі Multiplicity
виставляємо значення «0…1». На вкладці
Role A
Detail
у полі Multiplicity
виставляємо значення «1».
Класи «User» і «Catalog» є незалежними, тому їх необхідно зв’язати відношенням асоціації. Оскільки конкретний запит до каталогу може бути зроблений лише одним користувачем, а сам користувач може зробити від 1 до декількох запитів до каталогу, тому кратність відношення «User»-«Catalog» 1 – 1..N. Для цього необхідно розмістити зв'язок асоціації за допомогою інструмента між класами «User» та «Catalog», на вкладці Role A Detail зняти відмітку «Navigable» та вибрати «Multiplicity» 1..n. На вкладці Role B Detail вибрати «Multiplicity» 1. На вкладці General вказати ім'я зв’язку «make queries». Для того, щоб упорядкувати всі запити до каталогу одягу створемо упорядкування запитів додаванням рядка-параметра {ordered} до кінця асоціації з боку класу «Catalog».
Класи
«Customer» та
«Administartor»
є потомками класів «User»
та «Person»,
тому вони зв’язані відношенням
узагальнення, тобто ми маємо множинне
спадкування класів «Customer»
та «Administartor»
від несумісних класів «User»
та «Person».
Для зображення множинного спадкування
від несумісних класів необхідно
розмістити зв'язок узагальнення за
допомогою інструмента
між класами «Customer»
та «User»,
«Administrator»
та «User»,
«Customer» та
«Person»,
«Administrator»
та «Person»
(від класу-потомка до класу-предка).
Рисунок 1.2.38 – Діаграма класів і зв’язки між класами
6. Необхідно сгенерувати коди класів на C++. На основі діаграми класів Rational Rose дозволяє створювати код класу на обраній мові. Для того, щоб скористатися даною можливістю, необхідно переконатися, що вибрана мова програмування встановлена за допомогою Menu: Add-Ins менеджера (Add-Ins => Add-In Manager… => Rose C++ (встановити галочку).
Перед початком генерації коду необхідно перевірити виконання наступних умов на діаграмі класів:
всі імена класів, атрибутів, операцій повинні бути записані латиницею;
всі атрибути повинні мати визначений тип;
всі операції повинні мати визначений тип повертаємого значення.
Далі Menu: Tools => C++ => Code Generation. З'явиться діалогове вікно, показане на рис. 1.2.39.
Рисунок 1.2.39 – Діалогове вікно після генерації коду
Після генерації коду в контекстному меню стане доступний додатковий пункт C++, в якому можна переглянути заголовки (Header).h і файл тіла класу (Body).cpp, як показано на рис. 1.2.40. Тепер можна переглядати файли тіла класу і заголовний файл після кожної внесеної зміни, щоб перевірити, як ці зміни позначаться на сгенерованому коді.
Також можна переглядати коди створених файлів безпосередньо, зайшовши у директорію …\Rational\Rose\C++\source\ .
Рисунок 1.2.40 – Доступне меню С++
