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

19.2.3. Відношення агрегації

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

Таке відношення має фундаментальне значення для опису структури складних систем, оскільки застосовується для представлення системних взаємозв'язків типу "частина-ціле". Розкриваючи внутрішню структуру системи, відношення агрегації показує, з яких компонентів складається система і як вони зв'язані між собою. З погляду моделі окремі частини системи можуть виступати як у вигляді елементів, так і у вигляді підсистем, які, у свою чергу, теж можуть утворювати складені компоненти або підсистеми. Це відношення за своєю суттю описує декомпозицію або розбиття складної системи на простіші складові частини, які також можуть бути піддані декомпозиції, якщо в цьому виникне необхідність в подальшому.

Примітка

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

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

Як приклад відношення агрегації розглянемо взаємозв'язок типу «частина-ціле», який має місце між сутністю "Вантажний автомобіль" і такими компонентами, як "Двигун", "Шасі", "Кабіна", "Кузов". Не претендуючи на точну відповідність термінології такої предметної області, неважко уявити собі, що вантажний автомобіль складається з двигуна, шасі, кабіни і кузова. Саме це відношення між класом " Вантажний_автомобіль" і класами "Двигун", "Шасі", "Кабіна", "Кузов" описує відношення агрегації.

Графічно відношення агрегації зображається суцільною лінією, один з кінців якої є не зафарбованим всередині ромбом. Цей ромб вказує на той з класів, який є "ціле". Решта класів є його "частинами" (рис. 19.8).

Рис. 19.8. Графічне зображення відношення агрегації в мові UML

Ще одним прикладом відношення агрегації може служити відомий кожному із читачів поділ персонального комп'ютера на складові частини: системний блок, монітор, клавіатуру і мишку. Використовуючи позначення мови UML, компонентний склад ПК можна представити у вигляді відповідної діаграми класів (рис. 19.9), яка в цьому випадку ілюструє відношення агрегації.

Рис. 19.9. Діаграма класів для ілюстрації відношення агрегації на прикладі ПК

19.2.4. Відношення композиції

Відношення композиції, як уже згадувалося раніше, є окремим випадком відношення агрегації. Це відношення служить для виділення спеціальної форми відношення «частина-ціле», при якій складники в деякому розумінні знаходяться всередині цілого. Специфіка взаємозв'язку між ними полягає в тому, що частини не можуть виступати у відриві від цілого, тобто із знищенням цілого знищуються і всі його складові частини.

Можливо, не самим кращим, але напевно, зрозумілішим усім прикладом цього відношення є жива клітина в біології. Інший приклад – вікно інтерфейсу програми, яке може складатися з рядка заголовку, кнопок керування розміром, смуг прокрутки, головного меню, робочої області і рядку стану. Неважко зрозуміти, що подібним вікном є клас, а його компоненти є як класи, так і атрибути властивостей вікна. Остання обставина характерна для відношення композиції, оскільки відображає різні способи представлення такого відношення.

Графічно відношення композиції зображається суцільною лінією, один з кінців якої є зафарбованим всередині ромбом. Цей ромб вказує на той з класів, який є класом-композицією або "ціле". Решта класів є його "частинами" (рис. 19.10).

Рис. 19.10. Графічне зображення відношення композиції в мові UML

Як додаткові позначення для відношень композиції і агрегації можуть використовуватися додаткові позначення, які використовуються для відношення асоціації. А саме, вказівка кратності класу асоціації й імені даної асоціації, які не є обов'язковими. Стосовно описаного вище прикладу класу "Вікно_програми" його діаграма класів може мати такий вигляд (рис. 19.11).

Рис. 19.11. Діаграма класів для ілюстрації відношення композиції на прикладі класу вікна програми

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