|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Примітка. У зв'язку з розглядом такого відношення цілком доречно пригадати про спеціальний термін "агрегат"
У зв'язку з розглядом такого відношення цілком доречно пригадати про спеціальний термін "агрегат", який служить для позначення технічної системи, що складається з взаємодіючих складових частин або підсистем. Ця аналогія не випадкова і може служити для нагляднішого розуміння суті даного відношення. Очевидно, що ділення системи, що розглядається в такому аспекті, на складові частини є деякою ієрархією її компонент, проте дана ієрархія принципово відрізняється від ієрархії, що породжується відношенням узагальнення. Відмінність полягає в тому, що частини системи ніяк не зобов'язані успадковувати її властивості і поведінку, оскільки є цілком самостійною сутністю. Більше того, частини цілого володіють своїми власними атрибутами й операціями, які істотно відрізняються від атрибутів і операцій цілого. Як приклад відношення агрегації розглянемо взаємозв'язок типу «частина-ціле», який має місце між сутністю "Вантажний автомобіль" і такими компонентами, як "Двигун", "Шасі", "Кабіна", "Кузов". Не претендуючи на точну відповідність термінології такої предметної області, неважко уявити собі, що вантажний автомобіль складається з двигуна, шасі, кабіни і кузова. Саме це відношення між класом " Вантажний_автомобіль" і класами "Двигун", "Шасі", "Кабіна", "Кузов" описує відношення агрегації. Графічно відношення агрегації зображається суцільною лінією, один з кінців якої є не зафарбованим всередині ромбом. Цей ромб вказує на той з класів, який є "ціле". Решта класів є його "частинами" (рис. 19.8). Рис. 19.8. Графічне зображення відношення агрегації в мові UML Ще одним прикладом відношення агрегації може служити відомий кожному із читачів поділ персонального комп'ютера на складові частини: системний блок, монітор, клавіатуру і мишку. Використовуючи позначення мови UML, компонентний склад ПК можна представити у вигляді відповідної діаграми класів (рис. 19.9), яка в цьому випадку ілюструє відношення агрегації. Рис. 19.9. Діаграма класів для ілюстрації відношення агрегації на прикладі ПК 19.2.4. Відношення композиції Відношення композиції, як уже згадувалося раніше, є окремим випадком відношення агрегації. Це відношення служить для виділення спеціальної форми відношення «частина-ціле», при якій складники в деякому розумінні знаходяться всередині цілого. Специфіка взаємозв'язку між ними полягає в тому, що частини не можуть виступати у відриві від цілого, тобто із знищенням цілого знищуються і всі його складові частини. Можливо, не самим кращим, але напевно, зрозумілішим усім прикладом цього відношення є жива клітина в біології. Інший приклад – вікно інтерфейсу програми, яке може складатися з рядка заголовку, кнопок керування розміром, смуг прокрутки, головного меню, робочої області і рядку стану. Неважко зрозуміти, що подібним вікном є клас, а його компоненти є як класи, так і атрибути властивостей вікна. Остання обставина характерна для відношення композиції, оскільки відображає різні способи представлення такого відношення. Графічно відношення композиції зображається суцільною лінією, один з кінців якої є зафарбованим всередині ромбом. Цей ромб вказує на той з класів, який є класом-композицією або "ціле". Решта класів є його "частинами" (рис. 19.10). Рис. 19.10. Графічне зображення відношення композиції в мові UML Як додаткові позначення для відношень композиції і агрегації можуть використовуватися додаткові позначення, які використовуються для відношення асоціації. А саме, вказівка кратності класу асоціації й імені даної асоціації, які не є обов'язковими. Стосовно описаного вище прикладу класу "Вікно_програми" його діаграма класів може мати такий вигляд (рис. 19.11). Рис. 19.11. Діаграма класів для ілюстрації відношення композиції на прикладі класу вікна програми Цей приклад може ілюструвати й інші особливості комп'ютерної програми, що розробляється, які не вказувалися в явному вигляді під час опису цього прикладу Так, зокрема, вказівка кратності 1 поряд з класом "Робоча_область" характерна для однодокументного застосування. 19.2.5. Відношення узагальнення Відношення узагальнення є звичайним таксономічним відношенням між загальнішим елементом (батьком або предком) і частковішим або спеціальним елементом (нащадком). Таке відношення може використовуватися для представлення взаємозв'язків між пакетами, класами, варіантами використання й іншими елементами мови UML. Стосовно діаграми класів таке відношення описує ієрархічна будова класів і успадкування їх властивостей і поведінки. При цьому передбачається, що клас-нащадок володіє всіма властивостями і поведінкою класу-предка, а також має свої власні властивості і поведінку, які відсутні в класу-предка. На діаграмах відношення узагальнення позначається суцільною лінією з трикутною стрілкою на одному з кінців (рис. 14.12). Стрілка вказує на загальніший клас (клас-предок або суперклас), а її відсутність – на спеціалізований клас (клас-нащадок або підклас). Рис. 19.12. Графічне зображення відношення узагальнення в мові UML Як правило, на діаграмі може вказуватися декілька ліній для одного відношення узагальнення, що відображає його таксономічний характер. У цьому випадку загальніший клас розбивається на підкласи одним відношенням Узагальнення. Наприклад, клас Геометрична_фігура_на_площині (курсив позначає абстрактний клас) може виступати як суперклас для підкласів, що відповідають конкретним геометричним фігурам, таким як, Прямокутник, Коло, Еліпс і ін. Даний факт може бути представлений графічно у формі діаграми класів такого вигляду (рис. 19.13). Рис. 19.13. Приклад графічного зображення відношення узагальнення класів З метою спрощення позначень на діаграмі класів сукупність ліній, що позначають одне і те ж відношення узагальнення, може бути об'єднана в одну лінію. У цьому випадку окремі лінії зображаються такими, що сходяться до єдиної стрілки, що має з ними загальну точку перетину (рис. 19.14). Рис. 19.14. Варіант графічного зображення відношення узагальнення класів для випадку об'єднання окремих ліній Це позначення відповідає графові спеціального вигляду, який розглядався в розділі 4, а саме – ієрархічному дереву. У цьому випадку клас-предок є коренем цього дерева, а класи-нащадки – його листям. Відмінність полягає в можливості вказівки на діаграмі класів потенційної можливості наявності інших класів-нащадків, які не включені в позначення представлених на діаграмі класів (багатокрапка замість прямокутника). Поряд із стрілкою узагальнення може розміщуватися рядок тексту, який вказує на деякі додаткові властивості цього відношення. Цей текст відноситиметься до всіх ліній узагальнення, які йдуть до класів-нащадків. Іншими словами, відмічена властивість стосується всіх підкласів даного відношення. При цьому текст слід розглядати як обмеження, і тоді він записується у фігурних дужках. Як обмеження можуть бути використані наступні ключові слова мови UML: ¨ {complete} – означає, що у відношенні узагальнення специфіковані всі класи-нащадки, а інших класів-нащадків у даного класу-предка бути не може. Приклад – клас Клієнт_банку є предком для двох класів: Фізична_особа і Компанія, а інших класів-нащадків він не має. На відповідній діаграмі класів це можна вказати явно, записавши поряд з лінією узагальнення даний рядок-обмеження; ¨ {disjoint} – означає, що класи-нащадки не можуть містити об'єктів, що одночасно є екземплярами двох або більше класів. У приведеному вище прикладі ця умова також виконується, оскільки передбачається, що ніяка конкретна фізична особа не може бути одночасно і конкретною компанією. У цьому випадку поряд з лінією узагальнення можна записати даний рядок-обмеження; ¨ {incomplete} – означає випадок, протилежний першому. А саме, передбачається, що на діаграмі вказані не всі класи-нащадки. У подальшому можливо заповнити їх перелік не змінюючи вже побудовану діаграму. Приклад – діаграма класу "Автомобіль", вказівка всіх без виключення моделей автомобілів тотожне із створенням відповідного каталогу. З іншої сторони, для окремої задачі, такої як розроблення системи продажу автомобілів конкретних моделей, у цьому немає необхідності. Але вказати неповноту структури класів-нащадків усе ж таки треба; ¨ {overlapping} – означає, що окремі екземпляри класів-нащадків можуть належати одночасно декільком класам. Приклад – клас "Багатокутник" є класом-предком для класу "Прямокутник" і класу "Ромб". Проте існує окремий клас "Квадрат", екземпляри якого одночасно є об'єктами перших двох класів. Цілком природно таку ситуацію вказати явно за допомогою даного рядка-обмеження. З врахуванням можливості використання рядків-обмежень діаграма класів (рис. 19.14) може бути зображена без багатокрапок і без втрати інформації (рис. 19.15). Рис. 19.15. Варіант графічного зображення відношення узагальнення класів з використанням рядка-обмеження Щоб проілюструвати особливості використання відношення узагальнення, перетворимо один з розглянутих раніше прикладів зображення класів у графічну нотацію мови UML. В якості такого прикладу розглянемо ієрархію вкладеності класів для абстрактного класу "Автомобіль" (див. рис. 3.2, 4.7). Відношення між окремими класами на цих рисунках є саме відношенням узагальнення, яке в мові UML має спеціальне графічне позначення. З врахуванням цієї графічної нотації, фрагмент семантичної мережі для представлення ієрархії класу "Автомобіль" (див. рис. 4.7) може бути представлений у вигляді діаграми класів, наведеної на рис. 19.16. Рис. 19.16. Фрагмент діаграми класів з відношенням узагальнення для подання ієрархії класів "Автомобіль" з розглянутого раніше прикладу (див. рис. 4.7) Відмітимо, що у такому прикладі всі класи верхніх рівнів є абстрактними, тобто не можуть бути представлені своїми екземплярами. Саме тому їх імена записані курсивом. На відміну від них класи нижнього рівня є конкретними, оскільки можуть бути представлені своїми екземплярами, якими виступають виготовлені автомобілі відповідної моделі з унікальним заводським номером. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |