Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
158
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

24.3. Залежності

У загальному випадку відношення залежності було розглянуте раніше (див. розділ 19). Нагадаємо, що залежність не є асоціацією, а служить для подання тільки факту наявності такого зв'язку, коли зміна одного елементу моделі має вплив або приводить до зміни іншого елемента моделі. Відношення залежності на діаграмі компонент зображається пунктирною лінією із стрілкою, яка направлена від клієнта (залежного елемента) до джерела (незалежного елемента).

Залежності можуть відображати зв'язки модулів програми на етапі компіляції і генерації програмних кодів. У іншому випадку залежність може відображати наявність в незалежному компоненті описів класів, які використовуються в залежному компоненті для створення відповідних об'єктів. Стосовно діаграми компонент залежності можуть зв'язувати компоненти та імпортовані цим компонентом інтерфейси, а також різні види компонентів між собою.

У першому випадку малюють стрілку від компоненту-клієнта до інтерфейсу, що імпортується (рис. 24.4). Наявність такої стрілки означає, що компонент не реалізує відповідний інтерфейс, а використовує його в процесі свого виконання. Причому на цій же діаграмі може бути присутнім і інший компонент, який реалізує цей інтерфейс. Так, наприклад, зображений нижче фрагмент діаграми компонент задає інформацію про те, що компонент з іменем "main.exe" залежить від імпортованого інтерфейсу IDialog, який, у свою чергу, реалізується компонентом з іменем "image.java". Для другого компоненту цей же інтерфейс є експортованим.

Рис. 24.4. Фрагмент діаграми компонент з відношенням залежності

Відмітимо, що зобразити другий компонент з іменем "image.java" у формі варіанту примітки не можна саме через той факт, що цей компонент реалізує інтерфейс.

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

Рис. 24.5. Графічне зображення відношення залежності між компонентами

Нарешті, на діаграмі компонент можуть бути подані відношення залежності між компонентами і реалізованими в них класами. Ця інформація має важливе значення для забезпечення узгодження логічного і фізичного подань моделі системи. Зрозуміло, зміни в структурі описів класів можуть привести до зміни компоненту. Нижче приводиться фрагмент залежності подібного роду, коли деякий компонент залежить від відповідних класів.

Рис. 24.6. Графічне зображення залежності між компонентом і класами

Слід відмітити, що у цьому випадку з діаграми компонентів не випливає, що класи реалізовані цим же компонентом. Якщо потрібно підкреслити, що деякий компонент реалізує окремі класи, то для позначення компоненту використовується розширений символ прямокутника. При цьому прямокутник компоненту ділиться на дві секції горизонтальною лінією. Верхня секція служить для запису імені компоненту, а нижня секція – для вказівки додаткової інформації (рис. 24.7).

Рис. 24.7. Графічне зображення компоненту з додатковою інформацією про класи, що ними реалізуються

Всередині символу компоненту можуть зображатися інші елементи графічної нотації, такі як класи (компонент рівня типу) або об'єкти (компонент рівня екземпляру). У цьому випадку символ компоненту зображається так, щоб вміщати ці додаткові символи. Так, наприклад, зображений нижче компонент (рис. 24.8) є екземпляром і реалізує три окремі об'єкти.

Рис. 24.8. Графічне зображення компоненту рівня екземпляра, що реалізує окремі об'єкти

Об'єкти, які знаходяться в окремому компоненті-екземплярі, зображаються вкладеними в символ цього компоненту. Подібна вкладеність означає, що виконання компоненту здійснює виконання відповідних об'єктів. Іншими словами, існування компоненту протягом часу виконання програми забезпечує існування, а можливо, і доступ всіх вкладених в нього об'єктів. Що стосується доступу до цих об'єктів, то він може бути додатково специфікований за допомогою кванторів видимості, подібно до видимості пакетів. Змістовний зміст видимості може відрізнятися для різних видів пакетів.

Так, для компонент з початковим текстом програми видимість може означати можливість внесення змін у відповідні тексти програм з їх подальшою перекомпіляцією. Для компонент з виконуваним кодом програми видимість може характеризувати можливість запуску для виконання відповідного компоненту або виклику реалізованих в нім операцій або методів.