You are on page 1of 11

Лабораторна робота №12

Тема: Діаграма класів


Мета роботи: навчитися моделювати класи, створювати діаграму
класів.

Використання Microsoft Visio для створення діаграм класів


Microsoft Visio - це додаток для створення діаграм і схем, що допомагає
візуалізувати, досліджувати і поширювати складні дані. В Visio складні для
розуміння таблиці і перетворення тексту в наочні доступні схеми.
За замовчуванням, при запуску Visio відкривається діалог створення
файлу, якщо цього не відбулося, виберіть у меню «Файл» пункт «Створити».
Якщо в списку останніх використаних шаблонів відсутня «Схема моделі UML»,
необхідно знайти її в категоріях шаблонів. Для цього виберіть категорію
«Програми і бази даних», і з пропонованих шаблонів виберіть «Схема моделі
UML» і натисніть на кнопку «Створити» (праворуч, під опис шаблону), або
просто клацніть по ньому двічі лівою кнопкою миші. Взагалі, шаблони цієї
категорії можуть бути корисні вам надалі.
Після вибору шаблону відкриється робоче поле. Взагалі, шаблон - це, по
суті, набір інструментів. Як видно на малюнку, за замовчуванням, в лівій
частині представляється інструментарій, а в правій - робочий лист, на який
методом drag and drop поміщаються ті чи інші елементи моделі. Розглянемо
інструментарій докладніше.
Зверху (1) розташовуються набори інструментів для різних діаграм.
Взагалі кажучи, в Visio визначена купа елементів, але для зручності навігації -
вони розбиті на шаблони (по суті-набори елементів). У завантаженому нами
шаблоні «Схема моделі UML» є 9 наборів (які відповідають 9-ти видів моделей
UML). Для створення моделі класів (діаграми класів) використовується набір
«Статична структура UML». Зрозуміло, якщо вам потрібен якийсь елемент,
який не входить до складу цього набору (або більш загально - шаблону), його
можна додати через меню «додаткові фігури», що знаходиться на першому
місці в інструментарії.
У набір «Статична структура UML» входить ряд елементів (2). Для
вирішення поставленого завдання в даній лабораторній роботі досить
наступних елементів:
- Клас - Клас асоціації
- Двомісна асоціація (вона ж - N-арна асоціація
бінарна двонаправлена) - Клас N-арної асоціації
- Узагальнення - Тип даних
- Композиція
Елементи в інструментарії можна міняти місцями (всі тим же горезвісним
drag 'n drop - ом), помістивши в одну купу найбільш часто використовувані (як,
наприклад, на малюнку 1 всі перераховані раніше елементи поміщені над злегка
помітної розділової лінією). Розглянемо ці елементи.
Клас
Перетягуємо клас на робочий лист. Visio дає йому ім'я класс1. Але перш
ніж поміняти його звернемо увагу на провідник по моделям.
Провідник служить для швидкого доступу до елементів моделі. І цей клас
був поміщений в «Типи даних C #», там же автоматично створена структурна
схема (з ім'ям «Структурна схема -1», по суті - це наша діаграма), до якої
відноситься наш клас. Нагадаю, в одній моделі може бути кілька діаграм. Щоб
не заплутатися, можна перейменувати схему точно так же, як ви
перейменовуєте файли в провіднику. Перейменувати клас можна тут же (в
провіднику за моделями), або відкривши вікно параметрів класу, клацнувши по
ньому 2 рази лівою кнопкою миші (або в провіднику моделей, або на робочому
аркуші). На даному етапі навчання нас цікавлять тільки 3 категорії
налаштувань: Клас, Атрибути, Операції.
Категорія параметрів Клас (загальні властивості класу):
1) Ім'я - тут задається ім'я класу.
2) Порожній шлях - відображає місце розташування класу в проекті
(моделі). Можна задати місце знаходження класу у вигляді шляху (перехід
записується як два двокрапки) у цьому полі, а можна «перетягнути» його туди,
куди потрібно в провіднику за моделями.
3) Стереотип - дозволяє вказати тип класу (в різних мовах програмування
визначені різні типи класів, що володіють індивідуальними особливостями).
4) Видимість - дозволяє вказати доступ до класу (відкритий - public,
закритий - private, закритий в межах ієрархії успадкування - protected). За
замовчуванням класи моделюються відкритими.
5) IsRoot, IsLeaf, IsAbstract, IsActive - так само вказують на особливості
класу: чи є він предком (тобто є кореневим класом в ієрархії успадкування і не
є предком інших класів) або нащадком, хто стоїть на останньому щаблі в
ієрархії успадкування (тобто жоден клас не може бути його спадкоємцем), або
абстрактним (не можна створити екземпляр абстрактного класу), або активним
(представляє собою потік управління).
6) Документація - інформація, що міститься тут, як правило, описує
призначення класу і використовується при складанні документації.
!!!!!!!!!З усіх цих налаштувань змінюємо тільки ІМ'Я!

Категорія параметрів Атрибути. Являє собою таблицю атрибутів класу.


Щоб додати атрибут натискаємо кнопку «Створити». Якщо вміст випадаючих
списків не відображається повністю, розтягніть віконце або стовпець. Для будь-
якого атрибута потрібно вказати ім'я, вибрати тип (тип вибирайте в тій же
категорії, що й клас - в нашому випадку «Типи даних C #»), видимість,
кратність, початкове значення. Обраний атрибут можна видалити або
дублювати (за допомогою однойменних операцій кнопок). Крім того, якщо в
класі визначено кілька атрибутів, можна переміщати обраний атрибут у списку
вгору і вниз (кнопки «Вгору» і «Вниз»).
Категорія параметрів Операції. Являє собою таблицю операцій класу.
Робота з операціями аналогічна атрибутам. Однак в цій таблиці визначені
тільки ім'я операції, тип значення, видимість, область дії і чи є вона
полиморфной.
Для того, що вказати параметри операції, потрібно зайти в її властивості
(виділити потрібну операцію в таблиці і натиснути кнопку «Властивості»). У
вікні вибрати категорію «Параметри», і додати параметри аналогічно
атрибутам в класі. Для кожного параметра операції визначається ім'я, тип
даних, вид (in, out, in-out) та значення за замовчуванням.
Додані атрибути і операції також видно в провіднику за моделями - у
вигляді дерева.
Ще одне важливе зауваження. При видаленні класу з листа, він
залишається в провіднику за моделями, тому для остаточного видалення класу,
його потрібно видалити і в цьому провіднику.
Двомісна асоціація, агрегація, композиція.
Припустимо, ми створили два класи, як показано на малюнку. Тепер
потрібно їх з'єднати відповідної асоціацією. Для цього перетягуємо елемент
«Двомісна асоціація» на робочий лист. Завдяки особливостям Visio
з'єднувальні лінії НЕ малюються від одного об'єкта до іншого. Тобто, спочатку
ми переносимо асоціацію (як будь-який елемент) на робочий лист, а потім її
кінці вручну з'єднуємо з класами.
Особливий момент, розробники Visio запропонували механізм
«приклеювання» - тобто на кожному блоці є ряд точок, до яких можна
приклеїти кінець з'єднувача (в загальному випадку, або асоціації в нашому
випадку). Якщо ви скористалися ним, то при зміні положення класу, Visio
самостійно домалює асоціацію. Однак, завдяки цьому механізму - більшість
сполучних ліній виявляються кривими, і немає можливості (може вона і є, але
дістатися до неї не представляється можливим) це виправити. Тепер
налаштуємо нашу асоціацію - клацніть по ній двічі лівою кнопкою миші (в
провіднику за моделями асоціації не відображаються).
Для кожної асоціації можна налаштувати:
1) ім'я;
2) повний шлях (аналогічно класам);
3) напрямок читання імен - використовується при прослеживании моделі
і вказівці напрямку асоціації;
4) налаштувати полюса (закінчення асоціацій). Для кожного полюса
можна вказати ім'я, тип агрегації, видимість, кратність, і можливість навігації
(простеження).
- Якщо потрібно, що у полюса не було імені - просто зітріть його.
- Для вказівки агрегації - в стовпці агрегат виберіть пункт «загальний».
- Для створення композиції - в стовпці агрегат виберіть пункт «складене».
- Щоб залишити просто асоціацію - в стовпці агрегат виберіть пункт «ні»
(це значення за замовчуванням).
- Кратність можна вибрати зі списку, а можна ввести вручну після
даблклік лівою кнопкою миші по комірці зі значенням кратності.
- Можливість простежування в даному навчальному курсі нас не
цікавить.
Ім'я асоціації за замовчуванням не відображається. Щоб виправити цю
ситуацію, клацніть правою кнопкою миші по асоціації і в контекстному меню
виберіть пункт «Параметри відображення фігури UML», і у вікні, в загальних
параметрах поставте галочку навпроти опції «Ім'я». Після чого тисніть ОК.

Рис. 1
N-рна асоціація
Єдина відмінність, з точки зору властивостей, N-арної асоціації від
двомісної - це відсутність можливості вказати напрямок читання імен, і,
навпаки, є можливість вказати число закінчень - за замовчуванням 3.
Узагальнення
З точки зору елемента, що з'єднує два класи, узагальнення нічим не
відрізняється від двомісної асоціації. А з параметрів узагальнення, на даному
етапі нас може цікавити тільки ім'я.
Клас асоціації, клас N-арной асоціації
Єдина особливість класу асоціації полягає в тому, що він володіє
параметрами, як асоціації (параметри полюсів асоціації), так і класу (атрибути,
операції). І те й інше ми вже розглянули раніше, але окремо, в описі асоціації
та класу.
Тип даних
Для створення перерахування, потрібно використовувати елемент «тип
даних». Цей елемент схожий на клас, в якому так само можна налаштувати
операції, але замість атрибутів задана категорія «перерахування», яка стає
доступною при вказівці стереотипу «enumeration».
Як тільки ви вказали такий стереотип, в категорії «перерахування»
з'явиться можливість додавати черговий елемент перерахування (ім'я та
значення).
Так можна створити перерахування fruits, що містить різні фрукти. При
бажанні, значення можна не вказувати (в цьому випадку осередки в стовпці
«буквальний» залишайте порожніми).
Рис. 2

Приклад моделі класів


На рис. 3 показана модель класів системи управління вікнами для робочої
станції. Ця модель значно спрощена (для реальної моделі знадобилося б кілька
сторінок), але вона демонструє багато конструкцій моделей класів і їх спільне
використання

Рис. 3
Клас Window визначає загальні параметри вікон всіх типів, зокрема
прямокутну кордон, яка визначається атрибутами х1, у1, х2, у2, і операції, що
дозволяють відображати і приховувати вікно, а також поміщати його на
передній або на задній план в загальному наборі вікон.
Полотном (canvas) називається область, в якій може відображатися
графіка. Canvas успадковує кордон від класу Window і додає розміри області
полотна, які визначаються атрибутами Сх1, СУ1, сх2, СУ2. Canvas містить
безліч елементів, на що вказує асоціація з класом Shape. Всі фігури
характеризуються кольором і шириною лінії. Фігури можуть бути лініями,
еліпсами або многокутниками. Кожен клас фігур має свої власні параметрами.
Багатокутник (Polygon) визначається списком його вершин. Еліпси (Ellipse) і
багатокутники є замкнутими фігурами, які характеризуються кольором і
шаблоном заливки. Лінії (Line) є одновимірними, а тому не можуть бути залиті.
Полотно підтримує операції додавання і видалення елементів.
Текстове вікно TextWindow - це різновид вікна з смугами прокрутки
ScrollingWindow, яке характеризується двома зсувами прокрутки xOffset і
yOffset і підтримує операцію scroll, що змінює значення зсувів. Текстове вікно
містить рядок і підтримує операції вставки і видалення символів. Полотно з
прокруткою (ScrollingCanvas) - особливий різновид полотна, що підтримує
прокрутку. Це вікно одночасно є полотном і вікном з прокруткою. Таким
чином, воно являє собою приклад множинного спадкоємства.
Панель (Panel) містить безліч об'єктів PanelItem, кожен з яких
характеризується унікальним в рамках однієї панелі ім'ям itemName, про що
говорить наявність кваліфікатора у відповідній асоціації. Кожен елемент панелі
може належати тільки одній панелі. Такий елемент являє собою зумовлений
значок, за допомогою якого користувач може взаємодіяти з системою.
Елементи панелі бувають трьох видів: кнопки, перемикачі та текстові елементи.
Кнопка (Button) характеризується відображається на екрані рядком, а також
атрибутом depressed, який показує, натиснута вона чи ні. Перемикач (Switch)
дозволяє користувачеві вибрати один із зумовлених варіантів, кожен з яких є
об'єктом класу ChoiceEntry, що характеризується відображається рядком і
повертається при його виборі значенням. Між ChoiceItem і ChoiceEntry є дві
асоціації: асоціація один-до-багатьох визначає безліч доступних варіантів, а
асоціація один-до- одного визначає обраний варіант. Обраний варіант повинен
бути одним з доступних, тому одна асоціація є підмножиною іншої, на що
вказує стрілка зі словом {subset}. Це приклад обмеження.
Коли елемент панелі вибирається користувачем, це породжує подія
(Event), яке представляє собою об'єднання сигналу про подію з таким, що
підлягає виконанню дією. Всі види елементів панелей мають асоціації
notifyEvent. Кожен елемент пов'язаний з однією подією, але одне і те ж подія
може породжуватися кількома елементами панелі. Текстові елементи
породжують події іншого типу, пов'язані з натисканням на клавішу клавіатури,
що відбувається в той момент, коли текстовий елемент є вибраним. Ці події
вказуються асоціацією з ім'ям полюса keyboardEvent. Текстові елементи
успадковують подія notifyEvent від суперкласу PanelItem. Подія notifyEvent
породжується при виділенні текстового елемента мишею.
Ця модель має безліч недоліків. Наприклад, нам слід було б визначити
тип Rectangle, який можна було б використовувати для визначення меж вікон і
полотен, а не вводити два однакових набору з чотирьох атрибутів. Лінія могла
б бути окремим випадком полілінії (послідовності з'єднаних між собою
лінійних сегментів), і тоді полілінія і багатокутник були б підкласами нового
суперкласу, що визначає список точок. Тут не вистачає безлічі атрибутів,
операцій і класів, які необхідні для реальної віконної системи. Між вікнами
повинні бути асоціації, наприклад, вони можуть перекривати одна одну. Проте,
ця проста модель дасть вам деяке відчуття того, що повинна являти собою
модель класів. Можна критикувати її, тому що вона містить в собі деякі чіткі
затвердження. Така модель могла б послужити основою для створення більш
повної моделі.

Окрім цього, в лабораторній роботі можна ще використовувати онлайн


сервіс draw.io.

ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ

1. Вивчити методичні вказівки по створенню діаграм клас з


використанням MS Visio, draw.io.
2. Розібратися в прикладі моделі класів.
3. Підготувати діаграму класів, що описує групу класів відповідно до
варіанта. Додати в класи атрибути і операції, відповідно до контексту варіанта
завдання. При виконанні завдання можна додавати власні класи.

Варіанти завдань

№ вар. Опис
1 Календар, подія, нагадування, контактна особа, рік, тиждень, день.
Врахувати такі факти:
1) календарів може бути кілька;
2) календар складається з днів, групувати по тижнями та місяцями;
3) кожна подія пов'язана з одним календарем, може відбуватися
один раз в день і повторюватися в інші дні;
4) події можуть бути пов'язані з контактними особами;
5) з кожною подією може бути пов'язано нагадування. Нагадування
можуть бути по електронній пошті або у вигляді звукового сигналу,
разові або періодичні.
2 Абонент, робоча станція абонента, сервер оператора, тариф, сеанс
зв'язку, рахунок.
Врахувати такі факти:
1) сервер надає робочої станції абонента доступ до ресурсів
оператора (інтернет, сховище даних, обчислювальні потужності)
під час сеансу зв'язку;
2) кожна послуга надається за власним тарифом;
3) для кожної послуги можливо кілька тарифів;
4) з кожним абонентом пов'язаний індивідуальний рахунок
(account), в залежності від залишку коштів на і надається послуга
(або надається, або ні);
5) абонент самостійно поповнює свій рахунок; оператор може
відправляти абонентам повідомлення про необхідність поповнення
рахунку.
3 Клієнт, борт, водій, автомобіль, диспетчер, замовлення, тариф.
Врахувати такі факти:
1) клієнт через диспетчера здійснює замовлення таксі. Викликати
він може тільки одне таксі;
2) для виконання кожного замовлення призначається борт
(автомобіль з водієм);
3) автомобілі можуть бути наступних типів - седан і мікроавтобус;
4) тариф визначається в залежності від типу автомобіля, клієнта
(персональної накопичувальної знижки).
4 Склад, магазин, торгова точка, товар, клієнт, постачальник,
рахунок.
Врахувати такі факти:
1) торгова точка і магазин реалізують товари, надані
постачальником. Магазин - це торгова точка, з власним складом;
2) клієнти можуть бути як фізичними, так і юридичними особами;
3) постачальники - тільки юридичні особи;
4) грошові операції з юридичними особами здійснюються через
один банківський рахунок;
5 Курс (предмет), лекція, лабораторне заняття, практичне заняття,
залік, іспит, деканат, кафедра, викладач, потік, група, студент.
Врахувати такі факти:
1) студенти об'єднані в групи, а групи в потік;
2) по кожному предмету для кожного потоку може бути тільки один
лектор, і 2 (один з них може бути сам лектор) викладача
лабораторних занять;
3) по кожному предмету обов'язково є лекції, а також в залежності
від предмета можуть бути практичні, лабораторні заняття, а також
залік або іспит;
4) у різних потоків по одному і тому ж предмету можуть бути різні
викладачі;
5) лектор по кожному студенту повідомляє інформацію в деканат
про відвідуваність занять, проміжному контролі, здача курсових
робіт, здача іспиту чи заліку;
6) викладачі працюють на певній кафедрі, до якої приписаний
предмет.
6 Банк, рахунок, клієнт, кредит, внесок, цінні папери, валюта.
Врахувати такі факти:
1) клієнти банку можуть купувати і продавати цінні папери і
валюту через банк;
2) клієнти можуть відкривати вклад і брати кредит у банку, при
цьому для кожного окремого кредиту або вкладу заводиться свій
рахунок;
3) клієнти можуть бути фізичними і юридичними особами.
7 Школа, дитячий майданчик, директор, шкільна рада, клас, книга,
школяр, вчитель, кафетерій, кімната відпочинку, комп'ютер, парта,
стілець, лінійка, олівець, гойдалки.
Врахувати такі факти:
1) дитячий майданчик, клас, кафетерій, кімната відпочинку - це
приміщення і площі школи;
2) директор керує роботою школи, будучи її працівником;
3) вчителі - працівники у школі;
4) школярі навчаються в школі, заняття проходять в певних класах,
і на них школярі можуть використовувати книги, лінійки, олівці;
5) в класах розташовуються парти, стільці, комп'ютери;
6) послугами кафетерію можуть скористатися всі бажаючі;
7) кімната відпочинку тільки для співробітників школи;
8) шкільна рада - група людей, що складається з батьків школярів,
що впливає на роботу школи.
8 Вираз, константа, змінна, функція, список аргументів, оператор
порівняння, арифметичний оператор, оператор, комп'ютерна
програма.
Врахувати такі факти:
1) комп'ютерна програма складається з операторів, функцій,
констант, змінних;
2) функція, в свою чергу, складається з операторів, констант,
змінних, і має список аргументів;
3) оператори являють собою вирази (які складаються з частин,
пов'язаних між собою арифметичними операторами: додавання,
ділення, віднімання, множення; частини - це константи, змінні і
функції, яким, в свою чергу, в якості аргументів передаються
константи і змінні), пов'язані між собою операторами порівняння;
4) оператори додавання і віднімання можуть бути унарними
(застосовуватися тільки до одного операнду) або бінарними
(застосовуватися до двох операндів)
9 Спортсмен, біатлоніст, лижник, стрибун з трампліна, міністерство
спорту, олімпіада, змагання, спортивна школа, тренер.
Врахувати такі факти:
1) спортсмени займаються різними зимовими видами спорту, кожен
з яких має свої особливості, тому розрізняють спортсменів -
біатлоністів, лижників, стрибунів на лижах з трампліну;
2) кожен спортсмен проходить навчання в спортивній школі під
керівництвом свого тренера; один тренер може працювати з
декількома спортсменами;
3) всі спортсмени беруть участь у змаганнях; в кожному змаганні,
кожен спортсмен займає певне місце;
4) участь в олімпійських іграх - мрія будь-якого спортсмена, але не
всі спортсмени показують достатній результат, для участі в них;
5) спортивну школу фінансує міністерство спорту, воно ж визначає
спортсменів, які представляють країну на олімпійських іграх;
10 Планшет, смартфон, повідомлення, текстове повідомлення,
голосове повідомлення, відео-повідомлення, розмова, відео-
розмова, людина.
Врахувати такі факти:
1) кілька людей можуть спілкуватися один з одним на відстані за
допомогою планшетів і смартфонів;
2) люди можуть розмовляти один з одним передаючи тільки звук
(Аудіо-зв'язок), відео і звук (відео-зв'язок) або надсилати один
одному повідомлення - голосові, текстові, відео.
3) в розмові може брати участь одночасно кілька людей
(конференц-зв'язок);
11 Клавіатура, миша, комп'ютер, людина, операційна система,
редактор діаграм, подія, клацання кнопкою миші, натискання на
клавішу.
Врахувати такі факти:
1) людина малює діаграму в редакторі діаграм;
2) для взаємодії з редактором вона використовує мишку та
клавіатуру, які підключені до комп'ютера;
3) операційна система, при виникненні події (натискання клавіші
клавіатури або клацання кнопкою миші) передає редактору
діаграми дані за подією, на які він реагує відповідним чином
(наприклад додає новий клас на діаграму);
12 Документ, лист, малюнок, текст, геометрична фігура, група, еліпс,
прямокутник, відрізок.
Врахувати такі факти:
1) документ складається з листів, на яких можуть розташовуватися
малюнки, текст, геометричні фігури;
2) до геометричних фігур відноситься еліпс, прямокутник,
відрізок;
3) текст, малюнки і геометричні фігури можуть об'єднуватися в
групи;
4) один і той же елемент документа, може належати одночасно
тільки одній групі;
5) група може складатися мінімум з двох елементів;
13 Читач, книга, читацький квиток, бібліотека, журнал, газета,
збірник наукових статей, паперові видання.
Врахувати такі факти:
1) читач зареєстрований в бібліотеці, і має читацький квиток (який
є унікальним для кожної бібліотеки і для кожного читача);
2) читач може брати паперові видання в бібліотеці - журнали,
газети, книги, збірники статей.
3) інформація про кожного паперовому виданні, яке читач взяв у
бібліотеці, заноситься в читацький квиток.
14 Слово, буква, звук, словник, тип (іменник, дієслово, прикметник,
прислівник),
Врахувати такі факти:
1) в словнику описано безліч слів;
2) з кожним словом пов'язані варіанти його написання -
послідовність літер, варіанти перенесення, варіанти вимови -
послідовність звуків, тип (дієслово, іменник, прикметник,
прислівник);
3) для кожного слова описано одне і більш його значень (в
залежності від контексту використання);
4) значення слова записуються в порядку спадання частоти
використання;
5) у багатьох слів є антоніми і синоніми;
6) для кожного слова наведена етимологія (походження слова).
15 Поїзд, машиніст, вокзал, пасажир, провідник, вагон купе, вагон
плацкарт, місце, квиток.
Врахувати такі факти:
1) потяг складається з вагонів (купи і / або плацкарт)
2) машиніст керує поїздом, провідник - відповідальний за свій
вагон;
3) пасажир сідає на поїзді на вокзалі, поїзд робить на вокзалі
зупинку;
4) квиток дає право пасажиру на проїзд в конкретному поїзді, в
конкретному вагоні, на конкретному місці;

You might also like