- •3. Об’єктно-орієнтований підхід до розробки програмного забезпечення. Дайте визначення поняття класу, об’єкту, поля, методу. З чого складається життєвий цикл об’єкту?
- •Опишіть внутрішню структуру об’єкта. Що таке інформація про тип під час виконання rtti і як вона використовується?
- •6. В чому полягає принцип спадковості? Що таке одинична та множинна спадковості? Як реалізується принцип одиничної та множинної спадковості в об’єктно-орієнтованих мовах програмування?
- •12. Поняття виключної ситуації, наведіть приклади виключних ситуацій. Як реалізуються виключні ситуації та їх обробка в об’єктно-орієнтованих мовах програмування?
- •13. Основні етапи і задачі об’єктно-орієнтованого аналізу предметної області. Які артефакти розробляються на етапі оОаналізу?
- •14. Визначення прецеденту. Що таке сценарій прецеденту та правила його опису?
- •Основні етапи і задачі об’єктно-орієнтованого проектування. Які артефакти розробляються на етапі оОпроектування?
- •18. Як під час проектування здійснюється розподіл обов’язків між класами? що таке шаблони проектування? Наведіть приклади шаблонів з прикладами їх застосування.
- •19. Охарактеризуйте мову uml та її призначення. Які діаграми для подання моделі складної системиё надає uml, дайте коротку характеристику діаграм. Для чого на діаграмах uml застосовується мова ocl?
- •Призначення та правила побудови діаграми прецедентів uml: типи зв’язків між прецедентами(з прикладами), зображення на діаграмі прецедентів ролей (акторів).
- •24. Різновид діаграм реалізації. Що спільного і в чому різниця в uml діаграмах компонентів та розгортання?
- •Призначення компонувальника та завантажувача. В чому різниця між статичним та динамічним компонування бібліотек? Дайте порівняльну характеристику програмних модулів та динамічних бібліотек.
- •Як організувати багато потокове застосування? Які проблеми можуть виникнути під час взаємодії потоків і які методи їх уникнення?
18. Як під час проектування здійснюється розподіл обов’язків між класами? що таке шаблони проектування? Наведіть приклади шаблонів з прикладами їх застосування.
Відносини між класами можуть означати одне з двох. По-перше, у них може бути щось спільне. Наприклад, і Маргаритка, і троянди - це різновиди квітів: і ті, й інші мають яскраво пофарбовані пелюстки і так далі. По-друге, може бути якийсь семантичний зв'язок Також існує симбіотичний зв'язок між квітами і божими корівками: Божі корівки захищають квіти від шкідників, які, в свою чергу, служать їжею божим корівкам.
Відомі три основних типи відносин між класами. По-перше, це відношення "узагальнення / спеціалізація" (загальне і приватне), відоме як "is-a". Троянди суть квіти, що означає: троянди є спеціалізованим приватним випадком, підклас більш загального класу "квіти". По-друге, це відношення "ціле / частина", відоме як "part of". Так, пелюстки є частиною кольорів. По-третє, це семантичні, смислові відносини, асоціації. Наприклад, троянди і свічки - і те, і інше можна використовувати для прикраси столу.
Мови програмування виробили кілька загальних підходів до виразів відносин цих трьох типів. Зокрема, більшість об'єктно-орієнтованих мов безпосередньо підтримують різні комбінації наступних видів відносин:
• асоціація
• успадкування
• агрегація
• використання
• інстанціювання
• метакласс.
Відносини: залежності Асоціації
Агрегації
Узагальнення
Альтернативою успадкування є делегування, при цьому об'єкти розглядаються як прототипи, які делегують свою поведінку споріднених їм об'єктах. Таким чином, класи стають не потрібні .
Успадкування, ймовірно, варто вважати найцікавішим семантично. Воно виражає відношення загального та приватного. Однак, одного спадкування недостатньо, щоб висловити все різноманіття явищ і відносин життя. Корисна також агрегація, що відображає відносини цілого і частини між екземплярами класів. Незайвим додати відношення використання, що означає наявність зв'язку між екземплярами класів.
Шаблон (template) або параметризований клас (parametrized class) призначений для позначення такого класу, який має один (або більше) нефіксованих формальний параметрів. Він визначає ціле сімейство або безліч класів, кожен з яких може бути отриманий зв'язуванням цих параметрів з дійсними значеннями. Зазвичай параметрами шаблонів служать типи атрибутів класів, такі як цілі числа, перерахування, масив рядків та ін. У більш складному випадку формальні параметри можуть представляти і операції класу.
Шаблони являють собою структуровані рекомендації і принципи.
Наприклад:
Ім’я шаблона |
Expert |
Вирішувана проблема |
Який основний принцип розподілу обов’язків між об’єктами? |
Розв’язок |
Обов’язки назначаються класу, який має інформацію, необхідну для їх виконання. |
Тобто, шаблон - це зазначені поіменно пара «проблема / рішення», яку можна застосовувати в різних контекстах, і містить рекомендації для застосування в різних конкретних ситуаціях.
Г рафічно шаблон зображується прямокутником, на верхньому правому куті якого приєднаний маленький прямокутник з пунктирних ліній (рис. 5.19), великий прямокутник може бути розділений на секції, аналогічно позначенню для класу. У верхньому прямокутнику вказується список формальних параметрів для тих класів, які можуть бути отримані на основі даного шаблону. У верхній секції шаблону записується його ім'я за правилами запису імен для класів.
Рис. 5.19. Графічне зображення шаблона на діаграмі класів
Шаблон не може бути безпосередньо використаний як клас, оскільки містить невизначені параметри. Найчастіше в якості шаблону виступає деякий суперклас, параметри якого уточнюються в його класах-нащадках. Очевидно, в цьому випадку між ними існує відношення залежності з ключовим словом "bind", коли клас-клієнт може використовувати певний шаблон для своєї подальшої параметризації. У більш окремому випадку між шаблоном і формуємим від нього класом має місце відношення узагальнення з успадкуванням властивостей шаблону. Концепція шаблонів є досить потужним засобом у ООП, і тому її використання в мові UML дозволяє не тільки скоротити розміри діаграм, але й найбільш коректно керувати успадкування властивостей і поведінки окремих елементів моделі.