Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції 2012-2013ооп.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
6.61 Mб
Скачать

7.1. Сфера застосування.

7.2. Основні поняття та принципи.

Уніфікована мова моделювання (UML) - це не що інше, як графічне подання алгоритму розв'язання задачі із застосуванням об' єктно - орієнтованого підходу. Згідно з визначенням, UML - це графічна мова, що містить безліч різних діаграм, які допомагають фахівцям з системного аналізу створювати алгоритми, а програмістам - з'ясовувати принципи роботи коду програми.

UML є потужним інструментом, який дає змогу зробити процес програмування більш легенею і ефективним. Кожен новий засіб реалізації основних елементів UML викладено у тому місці, де він стає корисним для ілюстрації основних концепцій ТОП. Наприклад, діаграми класів UML вивчаються одночасно з взаємодією різних класів, а узагальнення - у зв'язку з поняттям успадкування. Таким чином, у читача з' являється можливість, не докладаючи зайвих зусиль, засвоїти основні концепції мови UML, яка одночасно сприятиме більш ефективному засвоєнню ТОП мовою C++.

Одним із спеціалізованих засобів розроблення сучасного програмного забезпечення є система візуального ТОП під назвою С++ Builder 6 і попередні її версії. Система призначена для розроблення завершених додатків для Windiws найбільш різноманітної спрямованості, від суто обчислювальних і логічних - до графічних і мультимедійних.

7.3. Зв'язки між класами (асоціація, агрегація, композиція, узагальнення).

Поліморфізм і спадкоємство роблять мову C++ надзвичайно чудовим інструментом для реалізації об'єктно-орієнтованої технології проектування.

Але для ефективного сприйняття нових технологічних ідей сьогодні не обійтися без знання хоч би основ що стало вже стандартом унифицироваппого мови моделировагтя UMLK Мова UML є візуальним засобом представлення моделей програм.

Під моделями програм розуміється їх графічне представлення у вигляді різних діаграм, що відбивають зв'язки між об'єктами в програмному коді. Однією з основних діаграм мови UML є діаграма класів. Вона описує класи і відбиває відношення, існуючі між ними. Діаграма класів надзвичайно зручна для зіставлення різних варіантів проектних рішень. Крім того, ці діаграми використовують для опису так званих шаблонів проектування^ {design patterns), які у поєднанні з об'єктно-орієнтованою парадигмою лежать в основі сучасного підходу до розробки програмного забезпечення.

Клас зображається на діаграмі класів UML у вигляді прямокутника, що складається з трьох частин. Ім'я класу вказується у верхній частині. Список атрибутів (полів"^), можливо, з вказівкою типів і значень, приводиться в середній частині. У нижній частині записується список операцій (методів'), можливо, з вказівкою списку типів аргументів і типу повертаного значення. Ім'я абстрактного класу, так само як і імена абстрактних операцій (чисто віртуальних методів), виділяється курсивом. Перед ім'ям поля або методу може вказуватися специфікатор доступу за допомогою одного з трьох символів : + для publ 1с, - для private, # для protected. Для статичних елементів класу після специфікатора доступу записується символ $.

Асоціація

Якщо два класи концептуально взаємодіють один з одним, то така взаємодія називається асоціацією. Наприклад, бажаючи змоделювати торговельну точку, ми виявляємо дві абстракції: товари (клас Product) і продажі (клас Sale).

Об'єкт класу Sale - це деяка угода, в якій продано від 1 до п об'єктів класу Product. Над лінією поряд з позначенням класу може бути вказана так звана кратність {multiplicity'^), що вказує, скільки об'єктів цього класу може бути пов'язані з одним об'єктом іншого класу. Для представлення поняття "Довільна кількість" в UML використовується символ зірочки *.

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

Агрегація

Відношення агрегації між класами має місце, коли один клас містить як складову частину об'єкти іншого класу. Іншими словами, це відношення ціле частина, або відношення has, між двома класами. На діаграмі такий зв'язок позначається лінією із стрілкою у вигляді незафарбованого ромба, яка вказує на ціле. Дійсно, конкретний об'єкт класу Спортзал може містити не усі компоненти (спортивні снаряди), присутні на схемі.

Як розпізнати агрегацію в програмному коді? Для реалізації нестрогої агрегації частина включається в ціле по посиланню: на мові C++ це звичайно покажчик на відповідний клас. Таким чином, якщо цей покажчик дорівнює нулю, то компонент відсутній. Залежно від вирішуваної задачі такий компонент може з'являтися і зникати динамічно протягом життя об'єкту ціле.

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