- •Методичні вказівки
- •Частина 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 Контрольні запитання
- •Рекомендована література
2.2.2.1 Лінія життя об’єкта
Лінія життя об'єкта (object lifeline) зображується пунктирною вертикальною лінією, асоційованою з єдиним об'єктом на діаграмі послідовності. Лінія життя служить для позначення періоду часу, протягом якого об'єкт існує в системі і може потенційно брати участь у всіх її взаємодіях. Якщо об'єкт існує в системі постійно, то і його лінія життя повинна тривати по всій площині діаграми послідовності від самої верхньої її частини до самої нижньої (Object1 та Object2 на рис. 2.1).
Окремі об'єкти, виконавши свою роль в системі, можуть бути знищені (зруйновані), щоб звільнити займані ними ресурси. Для таких об'єктів лінія життя обривається в момент його знищення. Для позначення моменту знищення об'єкта в мові UML використовується спеціальний символ у формі латинської букви "X" (Object3 на рис. 2.1). Нижче цього символу пунктирна лінія не зображається, оскільки відповідного об'єкта в системі вже немає, і цей об'єкт повинен бути виключений з усіх наступних взаємодій.
Не обов'язково створювати всі об'єкти в початковий момент часу. Окремі об'єкти в системі можуть створюватися по мірі необхідності, економлячи ресурси системи і підвищуючи її продуктивність. У цьому випадку прямокутник такого об'єкта зображується не у верхній частині діаграми послідовності, а в тій її частині, яка відповідає моменту створення об'єкту (Object6 на рис. 2.2). При цьому прямокутник об'єкту вертикально розташовується в тому місці діаграми, яке по осі часу збігається з моментом його виникнення в системі. Очевидно, об'єкт обов'язково створюється зі своєю лінією життя і, можливо, з фокусом керування (див. п. 2.3.3).
Рисунок 2.2 – Графічне зображення різних варіантів ліній життя об’єктів
2.2.2.2 Налаштування часу життя об’єкту
По подвійному натисненню миші на значку об’єкту або через контекстне меню та опцію Open Specification… активізується діалогове вікно параметрів об'єкта (рис. 2.3) в якому можна ввести назву об'єкта і клас, реалізацією якого є даний об'єкт.
Для реалізації об'єктів у вікні параметрів доступна опція Persistence, що відображає час життя об'єкта (від його створення до знищення). Зазвичай об'єкти існують в межах їх області видимості і автоматично знищуються системою, коли виходять за цю область. Це відбувається в тих випадках, коли, наприклад, в підпрограмі визначається об'єкт класу, який автоматично знищується при завершенні підпрограми.
Рисунок 2.3 – Налаштування параметрів об’єкта
У мові C++ можна створити і пересувати об'єкт, не чекаючи, коли це зробить система, за допомогою команд new і delete. Зазвичай до такого варіанту вдаються й для зменшення файлу, що виконується. Відомо, що при створенні програми на Visual C++ визначення:
char s [10000];
призведе до збільшення виконуваного файлу на 10000 байт, тому що для цієї змінної буде зарезервовано місце в області даних програми. Проте створення масиву за допомогою операторів:
char * s;
s = new char [10000]; / / робота з масивом
практично не приведе до збільшення розміру виконуваного файлу, хоча мається на увазі, що програміст звільнить виділену пам'ять до завершення програми за допомогою оператора:
delete s [];
інакше вона буде недоступна для системи в цілому.
Для того щоб не забути звільнити виділену пам'ять, оптимальним буде виділення пам'яті в конструкторі класу та звільнення її в деструкторі. Таким чином, можна настроїти наступні параметри життя об'єкту:
Persistent – означає, що область видимості об'єкта перевищує час життя;
Static – означає, що даний елемент існує на всьому протязі роботи програми;
Transient – означає, що час життя об'єкту і область видимості збігаються.
Для того щоб показати, що ці властивості описують стан всіх об'єктів даного класу, можна вказати Multiple Instance.
Для безпосередньої вказівки моменту знищення об'єкта використовується значок Destruction Marker.
