Лабораторна робота №2 на тему Діаграма класів (Class Diagram)
« Назад
Лабораторна робота №2 Діаграма класів (Class Diagram) Мета роботи: для заданої предметної області побудувати діаграму класів.
Теоретичні відомості Центральне місце в ООАП займає розроблення логічної моделі системи у вигляді діаграми класів. Нотація класів у мові UML проста й інтуїтивно зрозуміла всім, хто коли-небудь мав досвід роботи з CASE-інструментами. Схожа нотація застосовується і для об'єктів – екземплярів класу — з тією відмінністю, що до імені класу додається ім'я об'єкту і весь напис підкреслюється. Нотація UML надає широкі можливості для відображення додаткової інформації (абстрактні операції і класи, стереотипи, загальні і приватні методи, деталізовані інтерфейси, параметризовані класи). При цьому можливе використання графічних зображень для асоціацій і їх специфічних властивостей, таких як відношення аґреґації, коли складовими частинами класу можуть виступати інші класи. Діаграма класів (Class Diagram) служить для подання статичної структури моделі системи в термінології класів об'єктно-орієнтованого програмування. Діаграма класів може відображати, зокрема, різні взаємозв'язки між окремими сутностями предметної області, такими як об'єкти і підсистеми, а також описує їх внутрішню структуру і типи відношень. На цій діаграмі не вказується інформація про тимчасові аспекти функціонування системи. Із цього погляду діаграма класів є подальшим розвитком концептуальної моделі проектованої системи. Діаграмою класів є деякий граф, вершинами якого є елементи типу «класифікатор», які зв'язані різними типами структурних відношень. Зазначимо, що діаграма класів може також містити інтерфейси, пакети, відношення і навіть окремі екземпляри, такі як об'єкти і зв'язки. Коли говорять про цю діаграму, мають на увазі статичну структурну модель проектованої системи. Тому діаграму класів прийнято вважати графічним поданням таких структурних взаємозв'язків логічної моделі системи, які не залежать або інваріантні в часі. Діаграма класів складається з множини елементів, які в сукупності відображають декларативні знання про предметну область. Ці знання інтерпретуються в базових поняттях мови UML, таких як класи, інтерфейси і відношення між ними та їх складовими компонентами. При цьому окремі компоненти цієї діаграми можуть утворювати пакети для відображення загальнішої моделі системи. Якщо діаграма класів є частиною деякого пакету, то її компоненти мають відповідати елементам цього пакету, включаючи можливі посилання на елементи з інших пакетів. У загальному випадку пакет статичної структурної моделі може зображуватись у вигляді однієї або декількох діаграм класів. Декомпозиція деякого подання на окремі діаграми виконується з метою зручності і графічної візуалізації структурних взаємозв'язків предметної області. При цьому компоненти діаграми відповідають елементам статичної семантичної моделі. Модель системи, своєю чергою, має бути узгоджена з внутрішньою структурою класів, яка описується на мові UML. 1. КласКлас (Class) у мові UML служить для позначення множини об'єктів, які мають однакову структуру, поведінку і відношення з об'єктами інших класів. Графічно клас зображається у вигляді прямокутника, який додатково може бути розділений горизонтальними лініями на розділи або секції (рис. 2.1). У цих секціях можуть вказуватися ім'я класу, атрибути (змінні) і операції (методи). Рис. 2.1. Графічне зображення класу на діаграмі класів. Обов'язковим елементом позначення класу є його ім'я. На початкових етапах розроблення діаграми окремі класи можуть позначатися простим прямокутником із вказанням тільки імені відповідного класу (рис. 2.1, а). У міру опрацювання окремих компонентів, діаграми опису класів доповнюються атрибутами (рис. 2.1, б) і операціями (рис. 2.1, в). Навіть якщо секція атрибутів і операцій є порожньою, в позначенні класу вона виділяється горизонтальною лінією, щоб відразу відрізнити клас від інших елементів мови UML. Приклади графічного зображення класів на діаграмі класів наиведені на рис. 2.2. У першому випадку для класу "Прямокутник" (рис. 2.2, а) вказані тільки його атрибути – крапки на координатній площині, які визначають його розташування. Для класу "Вікно" (рис. 2.2, б) вказані тільки його операції, секція атрибутів залишена порожньою. Для класу "Рахунок" (рис. 2.2, в) додатково зображена четверта секція, в якій вказано виняток – відмову від опрацювання простроченої кредитної картки. Рис. 2.2. Приклади графічного зображення класів на діаграмі. 2. Відношення між класамиОкрім структури класів на відповідній діаграмі вказуються різні відношення між класами. При цьому сукупність типів таких відношень фіксована в мові UML і зумовлена семантикою цих типів відношень. Базовими відношеннями або зв'язками в мові UML є:
2.1. Відношення залежностіВідношення залежності в загальному випадку вказує деяке семантичне відношення між двома елементами моделі або двома множинами таких елементів, яке не є відношенням асоціації, узагальнення або реалізації. Воно стосується тільки самих елементів моделі і не вимагає множини окремих прикладів для пояснення свого сенсу. Відношення залежності використовується в такій ситуації, коли деяка зміна одного елемента моделі може вимагати зміни іншого залежного від нього елемента моделі. Відношення залежності графічно зображається пунктирною лінією між відповідними елементами зі стрілкою на одному з її кінців ("®" або "¬"). На діаграмі класів таке відношення зв'язує окремі класи між собою, при цьому стрілка напрямлена від класу-клієнта залежності до незалежного класу або класу-джерела (рис. 2.3). На цьому рисунку зображено два класи: Клас_А і Клас_Б, при цьому Клас_Б є джерелом деякої залежності, а Клас_А – клієнтом цієї залежності. Рис. 2.3. Графічне зображення відношення залежності на діаграмі класів. 2.2. Відношення асоціаціїВідношення асоціації відповідає наявності деякого відношення між класами. Таке відношення позначається суцільною лінією з додатковими спеціальними символами, які характеризують окремі властивості конкретної асоціації. Як додаткові спеціальні символи можуть використовуватися ім'я асоціації, а також імена і кратність класів-ролей асоціації. Ім'я асоціації є необов'язковим елементом її позначення. Якщо воно задане, то записується з великої літери поряд з лінією відповідної асоціації. Найпростіший випадок такого відношення – бінарна асоціація. Вона зв'язує лише два класи і, як виняток, може пов'язувати клас із самим собою. Для бінарної асоціації на діаграмі може бути вказаний порядок проходження класів з використанням трикутника у формі стрілки поряд з іменем цієї асоціації. Напрямок цієї стрілки вказує на порядок класів, один з яких є першим (з боку трикутника), а інший – другим (з боку вершини трикутника). Відсутність такої стрілки поряд з іменем асоціації означає, що порядок проходження класів у такому відношенні не визначений. Як простий приклад відношення бінарної асоціації розглянемо відношення між двома класами – класом "Компанія" і класом "Співробітник" (рис. 2.4). Вони зв'язані між собою бінарною асоціацією Робота, ім'я якої вказане на рисунку поряд з лінією асоціації. Для цього відношення визначений порядок проходження класів, першим з яких є клас "Співробітник", а другим – клас "Компанія". Окремим прикладом або екземпляром такого відношення може бути пара значень (Петренко І.І., "Роги&копита"). Це означає, що співробітник Петренко І.І. працює в компанії "Роги&копита". Рис. 2.4. Графічне зображення відношення бінарної асоціації між класами. 2.3. Відношення агрегаціїВідношення аґреґації має місце між декількома класами в тому випадку, якщо один з класів є деякою сутністю, яка включає в себе як складові частини інші сутності. Таке відношення має фундаментальне значення для опису структури складних систем, оскільки застосовується для відображення системних взаємозв'язків типу "частина-ціле". Розкриваючи внутрішню структуру системи, відношення аґреґації показує, з яких компонентів складається система і як вони зв'язані між собою. З погляду моделі окремі частини системи можуть виступати як у вигляді елементів, так і у вигляді підсистем, які, своєю чергою, теж можуть утворювати складені компоненти або підсистеми. Це відношення за своєю суттю описує декомпозицію або розбиття складної системи на простіші складові частини, які також можуть бути піддані декомпозиції, якщо в цьому виникне необхідність в подальшому. Графічно відношення аґреґації зображається суцільною лінією, один з кінців якої є не зафарбованим всередині ромбом. Цей ромб вказує на той із класів, який є "цілим". Решта класів є його "частинами" (рис. 2.5). Рис. 2.5. Графічне зображення відношення аґреґації в мові UML. 2.4. Відношення композиціїВідношення композиції, як уже згадувалося раніше, є окремим випадком відношення аґреґації. Це відношення служить для виділення спеціальної форми відношення «частина-ціле», при якій складники в деякому розумінні мчстяться всередині цілого. Специфіка взаємозв'язку між ними полягає в тому, що частини не можуть виступати у відриві від цілого, тобто зі знищенням цілого знищуються і всі його складові частини. Графічно відношення композиції зображається суцільною лінією, один з кінців якої є зафарбованим всередині ромбом. Цей ромб вказує на той із класів, який є класом-композицією або "цілим". Решта класів є його "частинами" (рис. 2.6). Рис. 2.6. Графічне зображення відношення композиції в мові UML. 2.5. Відношення узагальненняВідношення узагальнення є звичайним таксономічним відношенням між загальнішим елементом (батьком або предком) і частковішим або спеціальним елементом (нащадком). Таке відношення може використовуватися для відображення взаємозв'язків між пакетами, класами, варіантами використання й іншими елементами мови UML. Стосовно діаграми класів таке відношення описує ієрархічна будова класів і успадкування їх властивостей і поведінки. При цьому передбачається, що клас-нащадок має всі властивості і поведінку класу-предка, а також має свої власні властивості і поведінку, які відсутні у класу-предка. На діаграмах відношення узагальнення позначається суцільною лінією з трикутною стрілкою на одному з кінців (рис. 2.7). Стрілка вказує на загальніший клас (клас-предок або суперклас), а її відсутність – на спеціалізований клас (клас-нащадок або підклас). Рис. 2.7. Графічне зображення відношення узагальнення в мові UML. 3. ІнтерфейсиІнтерфейси є елементами діаграми варіантів використання і були розглянуті у лабораторній роботі №1. Проте під час побудови діаграми класів окремі інтерфейси можуть уточнюватися і в цьому випадку для їх зображення використовується спеціальний графічний символ – прямокутник класу з ключовим словом або стереотипом "interface" (рис. 2.8). При цьому секція атрибутів у прямокутника відсутня, а вказується тільки секція операцій. Рис. 2.8. Приклад графічного зображення інтерфейсу на діаграмі класів 4. Об'єктиОб'єкт (object) є окремим екземпляром класу, який створюється на етапі виконання програми. Він має своє власне ім'я і конкретні значення атрибутів. Із різних причин може виникнути необхідність показати взаємозв'язок не тільки між класами моделі, але і між окремими об'єктами, що реалізовують ці класи. У такому випадку може бути розроблена діаграма об'єктів, яка хоча і не є канонічною в мета-моделі мови UML, але має самостійне призначення. Для графічного зображення об'єктів використовується такий самий символ прямокутника, як і для класів. Відмінності виявляються під час вказання імен об'єктів, які для об'єктів обов'язково підкреслюють (рис. 2.9). При цьому запис імені об'єкту є рядком тексту "ім'я об’єкту: ім’я класу", розділений двокрапкою (рис. 2.9 а, б). Ім'я об'єкту може бути відсутнім, у цьому випадку передбачається, що об'єкт є анонімним, і двокрапка вказує на цю обставину (рис. 2.9, г). Відсутнім може бути й ім'я класу. Тоді вказується просто ім'я об'єкту (рис. 2.9, в). Атрибути об'єктів набувають конкретних значень. Рис. 2.9. Приклад графічного зображення об'єктів на діаграмах мови UML. 5. Шаблони або параметризовані класиШаблон (template) або параметризований клас (parametrized class) призначені для позначення такого класу, який має один (або більше) нефіксованих формальних параметрів. Він визначає ціле сімейство або множину класів, кожний з яких може бути отриманий зв'язанням цих параметрів з дійсними значеннями. Зазвичай параметрами шаблонів служать типи атрибутів класів, такі як цілі числа, перерахування, масив рядків і ін. У складнішому випадку формальні параметри можуть відображати й операції класу. Графічно шаблон зображається прямокутником, до верхнього правого кута якого приєднаний маленький прямокутник з пунктирних ліній (рис. 2.10), великий прямокутник може бути розділений на секції, аналогічно позначенню для класу. У верхньому прямокутнику вказується список формальних параметрів для тих класів, які можуть бути отримані на основі такого шаблону. У верхній секції шаблону записується його ім'я згідно з правилами запису імен для класів. Рис. 2.10. Графічне зображення шаблону на діаграмі класів. розгорненими на ньому компонентами. Хід роботи
Зміст звіту
Література
З повагою ІЦ "KURSOVIKS"! |