2. Класи і об’єкти
Відношення між об’єктами
У полі зору розробника ПЗ знаходяться не об'єкти-
одинаки, а взаємодіючі об'єкти, адже саме взаємодія
об'єктів реалізує поведінку системи. У Г. Буча є відмінна
цитата з Галла: «Літак - це набір елементів, кожен з яких
за своєю природою прагне впасти на землю, але ціною
спільних безперервних зусиль долає цю тенденцію» [22].
Відносини між парою об'єктів ґрунтуються на взаємній
інформації про дозволені операції і очікуваній поведінці.
Особливо цікаві два види відносин між об'єктами: зв'язки
і агрегація.
2
Andrey Gladky
KspDevelop@gmail.com
3. Типи відношень між об’єктами
Зв’язки
Зв'язок - це фізичне або понятійне з'єднання між
об'єктами. Об'єкт співпрацює з іншими об'єктами через
механізми зв'язку. Зв'язок позначає з'єднання, за
допомогою якого:
об'єкт-клієнт викликає операції об'єкта-постачальника;
один об'єкт переміщує дані до іншого об'єкта.
Як учасник зв'язку об'єкт може грати одну з трьох ролей:
◦ актор - об'єкт, який може впливати на інші об'єкти, але ніколи не
схильний до дії інших об'єктів;
◦ сервер - об'єкт, який ніколи не впливає на інші об'єкти, він тільки
використовується іншими об'єктами;
◦ агент - об'єкт, який може як впливати на інші об'єкти, так і
використовуватися ними. Агент створюється для виконання роботи
від імені актора або іншого агента.
3
Andrey Gladky
KspDevelop@gmail.com
4. Типи відношень між класами
4
Andrey Gladky
KspDevelop@gmail.com
Відношення
АсоціаціїУзагальнення Реалізації Залежності
Бінарна N-нарна Агрегації
Композиції
5. Типи відношень між класами
Відношення узагальнення - спадкування. Це відношення
добре розглядається в кожному підручнику якої-небудь ООП
мови.
5
Andrey Gladky
KspDevelop@gmail.com
6. Типи відношень між класами
Асоціація
Асоціація показує відносини між об'єктами-екземплярами
класу.
Бінарна
У модель додали клас «IdCard», що представляє
ідентифікаційну картку (пропуск) співробітника. Кожному
співробітнику може відповідати тільки одна ідентифікаційна
картка, потужність зв'язку 1 до 1.
N-арна асоціація
Уявімо, що в організації покладено закріплювати за
працівниками приміщення. Додаємо новий клас Room.
Кожному об'єкти працівник (Employee) може відповідати
декілька робочих приміщень. Потужність зв'язку один-до-
багатьох.
6
Andrey Gladky
KspDevelop@gmail.com
9. Типи відношень між класами
Асоціація
Агрегація.
Введемо в модель клас Department (відділ) - наше підприємство
структуровано по відділах. У кожному відділі може працювати
одна або більше осіб. Можна сказати, що відділ включає в себе
одного або більше співробітників і таким чином їх агрегує.
9
Andrey Gladky
KspDevelop@gmail.com
11. Типи відношень між класами
Агрегація.
Композиція
Припустимо, що однією з вимог до нашої системи є вимога про
те, щоб зберігати дані про колишню займаної посади на
підприємстві.
Введемо новий клас «pastPosition». У нього, крім властивості
«ім'я» (name), введемо і властивість «department», яке зв'яже
його з класом «Department».
Дані про минулі займаних посадах є частиною даних про
співробітника, таким чином між ними зв'язок ціле-частина і в
той же час, дані про минулі посадах не можуть існувати без
об'єкта типу «Employee». Знищення об'єкту «Employee» має
призвести до знищення об'єктів «pastPosition».
11
Andrey Gladky
KspDevelop@gmail.com
13. Типи відношень між класами
Залежність
Для організації діалогу з користувачем введемо в систему клас
«Menu». Вбудуємо один метод «showEmployees», який показує
список співробітників та їх посади. Параметром для методу є
масив об'єктів «Employee». Таким чином, зміни внесені в клас
«Employee» можуть зажадати і зміни класу «Menu».
Зауважимо, що клас «Menu» не відноситься до прикладної
області, а являє собою «системний» клас уявної програми.
13
Andrey Gladky
KspDevelop@gmail.com