Ідентифікація класів; UML-діаграми ієрархії класів
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Тут перевіряють уміння виділити класи предметної області з опису задачі та правильно зобразити їхні звʼязки на UML-діаграмі класів. Ключові поняття: клас, обʼєкт, атрибут, метод, а також відношення між класами (наслідування, асоціація, агрегація, композиція).
📖 Головне
• Клас — це шаблон (опис) обʼєктів із спільними властивостями та поведінкою. Обʼєкт — конкретний екземпляр класу.
• Атрибут — властивість класу (дані), метод — дія (операція), яку обʼєкт уміє виконувати.
• Ідентифікація класів: читаємо опис задачі й шукаємо іменники — це кандидати в класи та атрибути; дієслова — кандидати в методи.
• Не кожен іменник стає класом: прибирають синоніми, надлишкові, надто загальні та ті, що є лише атрибутом (наприклад «колір» — це атрибут, а не клас).
• UML-клас зображають прямокутником із трьох частин: назва, атрибути, методи.
• Видимість членів: + public (доступний усім), – private (лише всередині класу), # protected (клас і нащадки).
• Наслідування (узагальнення) — відношення «є різновидом» (is-a). Стрілка з порожнім трикутником спрямована ВІД нащадка ДО батьківського (базового) класу. Нащадок успадковує атрибути й методи предка.
• Асоціація — проста структурна звʼязь між класами (звичайна лінія), наприклад «Студент навчається у Групі».
• Агрегація — відношення «частина-ціле», де частина існує окремо від цілого (порожній ромб біля цілого). Приклад: Група і Студент.
• Композиція — сильніше «частина-ціле»: частина не існує без цілого (зафарбований ромб). Приклад: Будинок і Кімната.
• Кратність (множинність) біля кінців звʼязку: 1, 0..1, 1..*, * — скільки обʼєктів бере участь.
🔢 Як це працює на прикладі
Опис: «Бібліотека містить книги. Читач бере книгу. У книги є назва й автор».
Крок 1. Іменники → кандидати: Бібліотека, Книга, Читач, Автор, назва.
Крок 2. Відсіюємо: «назва» — це атрибут Книги, не клас. «Автор» можна зробити класом або атрибутом (залежно від задачі).
Крок 3. Дієслова → методи: «бере» → метод узятиКнигу() у Читача.
Крок 4. Звʼязки: Бібліотека ◆— Книга (композиція: книга належить бібліотеці), Читач —— Книга (асоціація з кратністю: один читач бере 0..* книг).
Результат: класи Бібліотека, Книга, Читач; Книга має атрибути назва, автор.
⚠️ Типові помилки
• Плутають напрям стрілки наслідування: трикутник завжди вказує на БАТЬКІВСЬКИЙ клас, а не на нащадка.
• Плутають агрегацію й композицію: ромб біля ЦІЛОГО; порожній — частина живе окремо, зафарбований — ні.
• Роблять класом те, що є атрибутом (вік, колір, назва) — зайві класи.
• Плутають клас і обʼєкт: клас — опис, обʼєкт — конкретний екземпляр.
• Забувають кратність або ставлять її не з того боку звʼязку.
🎯 Що завчити напамʼять
• Трикутник (порожній) = наслідування, вказує на предка.
• Порожній ромб = агрегація, зафарбований ромб = композиція (ромб біля цілого).
• + public, – private, # protected.
• Іменники → класи/атрибути, дієслова → методи.
• Три секції прямокутника: назва / атрибути / методи.
🧠 Перевір себе
1. Куди спрямований трикутник у відношенні наслідування?
2. Чим композиція відрізняється від агрегації?
3. Чому «колір автомобіля» зазвичай не окремий клас?
4. Що означає кратність 1..* на кінці звʼязку?
Відповіді: 1 — до базового (батьківського) класу; 2 — у композиції частина не існує без цілого (зафарбований ромб), в агрегації існує окремо (порожній ромб); 3 — це властивість (атрибут) класу Автомобіль, а не самостійна сутність; 4 — один або більше обʼєктів (мінімум 1, максимум не обмежений).