Патерни проєктування в програмуванні
Для вивчення у 2026-2027 навчальному році
Всього годин: 150
Завдання дисципліни полягає у формуванні теоретичних знань і
практичних умінь щодо застосування патернів проєктування під час
розроблення програмного забезпечення, зокрема: розкрити зміст і
призначення патернів проєктування, визначити їх роль у побудові
підтримуваних і розширюваних програмних систем, показати відмінності між
патерном, алгоритмом, фреймворком та типовими антипатернами; сформувати
уявлення про класифікацію патернів (створювальні, структурні,
поведінкові), їх намір, модель взаємодії та очікувані наслідки
застосування; навчити аналізувати вимоги та структуру коду, виявляти
типові проблеми дизайну і визначати доцільний патерн або простішу
альтернативу; забезпечити практичне опанування реалізації патернів у
межах мови курсу (Java або JavaScript) із дотриманням принципів
інкапсуляції змін, переваги композиції над наслідуванням, програмування
до абстракцій і слабкого зв’язування компонентів; сформувати навички
рефакторингу коду в напрямку патернів без зміни зовнішньої поведінки, з
підвищенням структурованості, читабельності та тестованості; навчити
стисло документувати та пояснювати проєктні рішення (UML/схеми, опис
відповідальностей і взаємодій), аргументувати компроміси та обмеження;
сформувати розуміння відповідності та відмінностей реалізацій патернів у
різних мовах на основі паралельних прикладів.
Мета курсу
Метою навчальної дисципліни «Патерни
проєктування в програмуванні» є формування у студентів умінь і навичок
проєктування програмних рішень на основі патернів проєктування та базових
принципів якісного програмного дизайну. Дисципліна спрямована на те, щоб студент
умів обґрунтовано добирати патерни відповідно до поставленої задачі, оцінювати
наслідки їх застосування та коректно реалізовувати обране рішення у програмному
коді.
Дисципліна реалізується в межах однієї мови
програмування (Java або JavaScript). Водночас навчальні матеріали містять
паралельні приклади реалізації ключових патернів іншою мовою з метою порівняння
підходів і кращого розуміння переносимості проєктних рішень між різними
екосистемами.
Програмні результати навчання
Після завершення дисципліни студент повинен
знати: основні групи патернів проєктування та типові ситуації їх практичного
застосування; структуру опису патерна (намір, взаємодія, наслідки, обмеження) і критерії
доцільності вибору; характерні помилки застосування патернів, зокрема випадки
невиправданого ускладнення архітектури; ключові концептуальні відмінності підходів до
реалізації патернів у Java та JavaScript на рівні ідей і організації коду (на
основі наведених у матеріалах порівняльних прикладів).
Студент повинен вміти: обирати патерн відповідно
до задачі та аргументовано обґрунтовувати вибір; проєктувати структуру
рішення (відповідальності, взаємодії, залежності) та реалізовувати патерн у
межах обраного мовного треку; виконувати рефакторинг у напрямку патернів,
зменшуючи зв’язність і підвищуючи модульність компонентів; читати та інтерпретувати
приклади реалізації патернів іншою мовою як порівняльний матеріал і переносити
ідеї у власну екосистему; застосовувати патерни під час розв’язання навчальних і прикладних задач
з чітким розподілом відповідальності.
Студент повинен досягти таких програмних
результатів навчання: проєктувати й реалізовувати підтримувані та розширювані програмні
компоненти з використанням патернів у межах мови курсу; виконувати аналіз коду та
здійснювати обґрунтований вибір проєктного рішення (патерн, спрощене рішення,
рефакторинг) з урахуванням наслідків для архітектури; застосовувати знання про
переносимість патернів між мовами програмування на основі порівняльних
прикладів і використовувати ці підходи у власній практиці.
Автори курсу
Стрельніков Віталій ІгоровичПідрозділ
Кафедра інформаційної та кібернетичної безпеки імені професора Володимира Бурячка,
Факультет інформаційних технологій і математики
Викладачі
Стрельніков Віталій ІгоровичПризначення
(Бакалавр)
123.00.01 Комп'ютерна інженерія
Період навчання
4-й рік
Розподіл
| Курс / рік навчання |
II |
III |
IV |
| Семестр |
3 |
4 |
5 |
6 |
7 |
8 |
| Розподіл кредитів (5) |
0 |
0 |
0 |
0 |
0 |
5 |
Кількість учасників
| Одиниця |
Студенти |
Групи |
Підгрупи |
| Мінімальна кількість |
5 |
1 |
1 |
| Максимальна кількість |
25 |
1 |
2 |