- •1.1. Методологія процедурно‑ орієнтованого програмування
- •1.2. Методологія об'єктно-орієнтованого програмування
- •1.3. Методологія об'єктно-орієнтованого аналізу і проектування
- •1.4. Методологія системного аналізу і системного моделювання
- •Розділ 2
- •2.1. Передісторія. Математичні основи
- •Мал. 2.4. Приклади неорієнтованого (а) і орієнтованого (б) графів
- •Мал. 2.5. Приклади неорієнтованого (а) і орієнтованого (б) дерев
- •Мал. 2.6. Ієрархічні схеми неорієнтованого дерева (а) і орієнтованого дерева (б)
- •2.2. Діаграми структурного системного аналізу
- •I (Input) – вхід, т. Е. Все, що поступає в процес або споживається процесом.
- •2.3. Основні етапи розвитку uml
- •2. Забезпечити початкові поняття язика uml можливістю розширення і спеціалізації для більш точного представлення моделей систем в конкретній наочній області.
- •3. Опис язика uml повинен підтримувати таку специфікацію моделей, яка не залежить від конкретних язиків програмування і інструментальних засобів проектування програмних систем.
- •4. Опис язика uml повинен включати семантичний базис для розуміння загальних особливостей ооап.
- •7. Інтегрувати в себе новітні і якнайкращі досягнення практики ооап.
- •3.2. Загальна структура язика uml
- •3.3. Пакети в язиці uml
- •3.4. Основні пакети метамоделі язика uml
- •3.5. Специфіка опису метамоделі язика uml
- •3.6. Особливості зображення діаграм язика uml
- •4.1. Варіант використовування
- •4.2. Актори
- •4.3. Інтерфейси
- •4.4. Примітки
- •4.5. Відносини на діаграмі варіантів використовування
- •4.6. Приклад побудови діаграми варіантів використовування
- •4.7. Рекомендації по розробці діаграм варіантів використовування
- •5.1. Клас
- •5.2. Відносини між класами
- •5.5. Шаблони або класи, що параметризуються
- •5.6. Рекомендації по побудові діаграм класів
- •6.1. Автомати
- •Include – ця мітка використовується для звернення до підавтомата, при цьому наступний за нею вираз дії містить ім'я цього підавтомата.
- •6.3. Перехід
- •6.4. Складовий стан і підстан
- •6.5. Історичний стан
- •Мал. 6.10. Графічне зображення недавнього (а) і давнього (б) історичного стану
- •6.6. Складні переходи
- •Мал. 6.11. Графічне зображення паралельного переходу з паралельних станів (а) і паралельного переходу в паралельні стани (б)
- •6.7. Заключні рекомендації по побудові діаграм станів
- •7.1. Стан дії
- •7.2. Переходи
- •7.5. Рекомендації по побудові діаграм діяльності
- •8.2. Повідомлення
- •Мал. 8.7. Діаграма послідовності із стереотипними значеннями повідомлень
- •8.3. Приклад побудови діаграми послідовності
- •8.4. Заключні рекомендації по побудові діаграм послідовності
- •9.1. Кооперація
- •9.3. Зв'язки
- •9.4. Повідомлення
- •9.6. Заключні рекомендації по побудові діаграм кооперації
- •10.1. Компоненти
- •10.2. Інтерфейси
- •10.3. Залежність
- •10.4. Рекомендації по побудові діаграми компонентів
- •11.1. Вузол
- •11.2. З'єднання
- •Мал. 11.4. Фрагмент діаграми розгортання із з'єднаннями меходу вузлами
- •11.3. Рекомендації по побудові діаграми розгортання
- •12.1. Загальна характеристика case‑ засобу Rational Rose 98/2000
- •12.2. Особливості робочого інтерфейсу Rational Rose
- •12.3. Початок роботи над проектом в середовищі Rational Rose
- •12.4. Розробка діаграми варіантів використовування в середовищі Rational Rose
- •12.5. Розробка діаграми класів в середовищі Rational Rose
- •12.6. Розробка діаграми станів в середовищі Rational Rose
- •12.7. Розробка діаграми послідовності в середовищі Rational Rose
- •12.8. Розробка діаграми кооперації в середовищі Rational Rose
- •12.9. Розробка діаграми компонентів в середовищі Rational Rose
- •12.10. Розробка діаграми розгортання в середовищі Rational Rose
10.2. Інтерфейси
Наступним елементом діаграми компонентів є інтерфейси. Останні вже неодноразово розглядалися раніше, тому тут будуть відзначені ті їх, особливості, які характерні для уявлення на діаграмах компонентів. Нагадаємо, що в загальному випадку інтерфейс графічно зображається колом, яке з'єднується з компонентом відрізком лінії без стрілок (мал. 10.3, а). При цьому ім'я інтерфейсу, яке обов'язково повинне починатися із заголовної букви «I», записується поряд з колом. Семантичний лінія означає реалізацію інтерфейсу, а наявність інтерфейсів у компоненту означає, що даний компонент реалізує відповідний набір інтерфейсів.
Мал. 10.3. Графічне зображення інтерфейсів на діаграмі компонентів
Іншим способом представлення інтерфейсу на діаграмі компонентів є його зображення у вигляді прямокутника класу із стереотипом «інтерфейс» і можливими секціями атрибутів і операцій (мал. 10.3, би). Як правило, цей варіант позначення використовується для представлення внутрішньої структури інтерфейсу, яка може бути важлива для реалізації.
При розробці програмних систем інтерфейси забезпечують не тільки сумісність різних версій, але і можливість вносити істотні зміни в одні частини програми, не змінюючи інші її частини. Таким чином, призначення інтерфейсів істотно ширше, ніж специфікація взаємодії з користувачами системи (акторами).
Примітка
Характер використовування інтерфейсів окремими компонентами може відрізнятися. Тому розрізняють два способи зв'язку інтерфейсу і компоненту. Якщо компонент реалізує деякий інтерфейс, то такий інтерфейс називають тим, що експортується, оскільки цей компонент надає його як сервіс іншим компонентам. Якщо ж компонент використовує деякий інтерфейс, який реалізується іншим компонентом, то такий інтерфейс для першого компоненту називається тим, що імпортується. Особливість інтерфейсу, що імпортується, полягає в тому, що на діаграмі компонентів це відношення зображається за допомогою залежності.
10.3. Залежність
В загальному випадку відношення залежності також було розглянуто раніше (див. розділ 5). Нагадаємо, що залежність не є асоціацією, а служить для представлення тільки факту наявності такого зв'язку, коли зміна одного елемента моделі робить вплив або приводить до зміни іншого елемента моделі. Відношення залежності на діаграмі компонентів зображається пунктирною лінією із стрілкою, направленою від клієнта (залежного елемента) до джерела (незалежному елементу).
Залежність може відображати зв'язки модулів програми на етапі компіляції і генерації об'єктного коду. В іншому випадку залежність може відображати наявність в незалежному компоненті описів класів, які використовуються в залежному компоненті для створення відповідних об'єктів. Стосовно діаграми компонентів залежність може зв'язувати компоненти і інтерфейси, а також різні види компонентів, що імпортуються цим компонентом, між собою.
В першому випадку малюють стрілку від компоненту‑ клієнта до інтерфейсу, що імпортується (мал. 10.4). Наявність такої стрілки означає, що компонент не реалізує відповідний інтерфейс, а використовує його в процесі свого виконання. Причому на цій же діаграмі може бути присутній і інший компонент, який реалізує цей інтерфейс. Так, наприклад, зображений нижче фрагмент діаграми компонентів уявляє інформацію про те, що компонент з ім'ям «main.exe» залежить від інтерфейсу, що імпортується, I Dialog, який, у свою чергу, реалізується компонентом з ім'ям «image.java». Для другого компоненту цей же інтерфейс є тим, що експортується.
Мал. 10.4. Фрагмент діаграми компонентів з відношенням залежності
Помітимо, що зобразити другий компонент з ім'ям «image.java» у формі варіанту примітки не можна саме через той факт, що цей компонент реалізує інтерфейс.
Іншим випадком відношення залежності на діаграмі компонентів є відношення між різними видами компонентів (мал. 10.5). Наявність подібної залежності означає, що внесення змін в початкові тексти програм або динамічні бібліотеки приводить до змін самого компоненту. При цьому характер змін може бути відзначений додатково.
Мал. 10.5. Графічне зображення відношення залежності між компонентами
Нарешті, на діаграмі компонентів можуть бути представлені відносини залежності між компонентами і реалізованими в них класами. Ця інформація має важливе значення для забезпечення узгодження логічного і фізичного представлень моделі системи. Зрозуміло, зміни в структурі описів класів можуть привести до зміни компоненту. Нижче приводиться фрагмент залежності подібного роду, коли деякий компонент залежить від відповідних класів.
Мал. 10.6. Графічне зображення залежності між компонентом і класами
Слід помітити, що в даному випадку з діаграми компонентів не виходить, що класи реалізовані цим компонентом. Якщо вимагається підкреслити, що деякий компонент реалізує окремі класи, то для позначення компоненту використовується розширений символ прямокутника. При цьому прямокутник компоненту ділиться на дві секції горизонтальною лінією. Верхня секція служить для запису імені компоненту, а нижня секція – для вказівки додаткової інформації (мал. 10.7).
Мал. 10.7. Графічне зображення компоненту з додатковою інформацією про реалізовувані їм класи
Усередині символу компоненту можуть зображатися інші елементи графічної нотації, такі як класи (компонент рівня типу) або об'єкти (компонент рівня екземпляра). В цьому випадку символ компоненту зображається так, щоб вміщати ці додаткові символи. Так, наприклад, зображений нижче компонент (мал. 10.8) є екземпляром і реалізує три окремі об'єкти.
Мал. 10.8. Графічне зображення компоненту рівня екземпляра, що реалізовує окремі об'єкти
Об'єкти, які знаходяться в окремому компоненті‑ екземплярі, зображаються вкладеними в символ даного компоненту. Подібна вкладеність означає, що виконання компоненту вабить виконання відповідних об'єктів. Іншими словами, існування компоненту протягом часу виконання програми забезпечує існування, а можливо, і доступ всіх вкладених в нього об'єктів. Що стосується доступу до цих об'єктів, то він може бути додатково специфікований за допомогою квантификаторов видимості, подібно видимості пакетів. Змістовне значення видимості може відрізнятися для різних видів пакетів.
Так, для компонентів з початковим текстом програми видимість може означати можливість внесення змін у відповідні тексти програм з їх подальшою перекомпіляцією. Для компонентів з виконуваним кодом програми видимість може характеризувати можливість запуску на виконання відповідного компоненту або виклику реалізованих в ньому операцій або методів.
