Об'єктно-орієнтоване програмування

Спеціальність: Комп'ютерні науки (Проектування і програмування інтелектуальних систем та пристроїв)
Код дисципліни: 6.122.12.O.008
Кількість кредитів: 7.00
Кафедра: Системи автоматизованого проектування
Лектор: к.т.н., ст.викл. каф. САП Оборська Оксана Володимирівна
Семестр: 2 семестр
Форма навчання: денна
Мета вивчення дисципліни: Забезпечити студентам здобуття поглиблених теоретичних та практичних знань, умінь та розуміння принципів і методів об’єктно-орієнтованого програмування для формування навичок алгоритмічного мислення, освоєння процесів алгоритмізації та їхньої реалізації на обчислювальних машинах, успішного виконання професійних обов’язків за спеціальністю «Комп’ютерні науки» та підготовки студентів для подальшого навчання.
Завдання: Забезпечити студентам здобуття поглиблених теоретичних та практичних знань, умінь та розуміння принципів і методів об’єктно-орієнтованого програмування для формування навичок алгоритмічного мислення, освоєння процесів алгоритмізації та їхньої реалізації на обчислювальних машинах, успішного виконання професійних обов’язків за спеціальністю «Комп’ютерні науки» та підготовки студентів для подальшого навчання.
Результати навчання: Внаслідок вивчення дисципліни “Об’єктно-орієнтоване програмування” студенти повинні: - знати основи об’єктно-орієнтованого програмування; - володіти сучасними методами та засобами об’єктно-орієнтованого програмування з використанням середовища Visual Studio; - вміти обробляти виключення і бібліотеки класів; - використовувати технології об’єктно-орієнтованого програмування. - володіти принципами побудови інформаційних моделей. Формування теоретичної бази знань студентів з мови програмування C/C++; - ознайомитись з принципами пошуку помилок в програмах і методами їх відлагодження та тестування; - набути практичних навичок роботи з типовими задачами програмування і методами їх рішення. - оцінювати отримані результати та аргументовано захищати їх під час здачі звіту.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: пререквізити: алгоритмізація та програмування ч.1, алгоритмізація та програмування ч.2; кореквізити: дискретна математика.
Короткий зміст навчальної програми: Курс “Об’єктно-орієнтоване програмування” включає таке коло питань: Основи об’єктно-орієнтованої мови програмування С++. Історія виникнення. Відмінності мови С та С++ не пов’язані з використанням об’єктів. Порівняння функціонального та об’єктного підходу. Об’єктно – орієнтоване програмування. Головні принципи об’єктного підходу. Абстрагування. Обмеження доступу. Модульність. Ієрархія. Поняття класів та об'єктів. Конструктори та деструктори. Протоколи опису класу. Створення об’єктів. Доступ до полів та методів. Використання специфікаторів доступу класу. Види класів. Контейнерні, вкладені, локальні. Конструктори та деструктори. Правила визначення конструкторів. Методи ініціалізації елементів у конструкторах. Порядок виклику конструкторів та деструкторів. Статичні члени класу. Перевантаження функцій та операцій. Унарні та бінарні оператори. Класи потоків С++. Операції поміщення та вилечення. Передресація введення та виведення. Визначення потокових операцій як дружніх. Функції керування процесом I/O. Прапорці форматування. Маніпулятори. Файлові потоки. Обробка виняткових ситуацій. Засоби керування, викидання об’єктів, структурне керування винятками. Успадкування (одинарне, множинне). Механізм успадкування. Керування доступами. Дружні класи та дружні функції. Інкапсуляція, наслідування, поліморфізм. Віртуальні функції. Чисті віртуальні функції та абстрактні базові класи. Розміщення VPTR та таблиці VMT у пам’яті. Віртуальні деструктори. Бібліотека стандартних шаблонів. Стек, списки, черги, деки, асоціативні відображення, множини. Рядки символів, вектори, матриці, алгоритми, масиви значень. Бібліотека стандартних шаблонів. Параметризовані функції. Параметризовані класи. Контейнери. API – функції для управління потоками та процесами. Синхронізація потоків у Windows. DLL (Dynamic-Linc Library). Qt Creator. Огляд властивостей DLL. Створення DLL і застосування Qt. Qt Creator - основні властивості. Засоби UML. Об’єктно-орієнтований аналіз та проектування предметного середовища засобами UML. Патерни та антипатерни проектування. Особливості роботи.
Опис: Історія виникнення. Відмінності мови С та С++ не пов’язані з використанням об’єктів. Порівняння функціонального та об’єктного підходу. Об’єктно – орієнтоване програмування. Головні принципи об’єктного підходу. Абстрагування. Обмеження доступу. Модульність. Ієрархія. Поняття класів та об'єктів. Конструктори та деструктори. Протоколи опису класу. Створення об’єктів. Доступ до полів та методів. Використання специфікаторів доступу класу. Види класів. Контейнерні, вкладені, локальні. Конструктори та деструктори. Правила визначення конструкторів. Методи ініціалізації елементів у конструкторах. Порядок виклику конструкторів та деструкторів. Статичні члени класу. Перевантаження функцій та операцій. Унарні та бінарні оператори. Класи потоків С++. Операції поміщення та вилечення. Передресація введення та виведення. Визначення потокових операцій як дружніх. Функції керування процесом I/O. Прапорці форматування. Маніпулятори. Файлові потоки. Обробка виняткових ситуацій. Засоби керування, викидання об’єктів, структурне керування винятками. Успадкування (одинарне, множинне). Механізм успадкування. Керування доступами. Дружні класи та дружні функції. Інкапсуляція, наслідування, поліморфізм. Віртуальні функції. Чисті віртуальні функції та абстрактні базові класи. Розміщення VPTR та таблиці VMT у пам’яті. Віртуальні деструктори. Бібліотека стандартних шаблонів. Стек, списки, черги, деки, асоціативні відображення, множини. Рядки символів, вектори, матриці, алгоритми, масиви значень. Бібліотека стандартних шаблонів. Параметризовані функції. Параметризовані класи. Контейнери. API – функції для управління потоками та процесами. Синхронізація потоків у Windows. DLL (Dynamic-Linc Library). Qt Creator. Огляд властивостей DLL. Створення DLL і застосування Qt. Qt Creator - основні властивості. Засоби UML. Об’єктно-орієнтований аналіз та проектування предметного середовища засобами UML. Патерни та антипатерни проектування. Особливості роботи.
Методи та критерії оцінювання: - поточний контроль (45%): письмові звіти з лабораторних робіт, усне опитування; - підсумковий контроль (55%, екзаменаційний контроль): тестування (45%), усна компонента (10%).
Критерії оцінювання результатів навчання: 8 лабораторних робіт по 5 балів (всього 40 балів) 50 балів письмова робота 10 балів усна компонента
Порядок та критерії виставляння балів та оцінок: 100–88 балів – («відмінно») виставляється за високий рівень знань (допускаються деякі неточності) навчального матеріалу компонента, що міститься в основних і додаткових рекомендованих літературних джерелах, вміння аналізувати явища, які вивчаються, у їхньому взаємозв’язку і роз витку, чітко, лаконічно, логічно, послідовно відповідати на поставлені запитання, вміння застосовувати теоретичні положення під час розв’язання практичних задач; 87–71 бал – («добре») виставляється за загалом правильне розуміння навчального матеріалу компонента, включаючи розрахунки , аргументовані відповіді на поставлені запитання, які, однак, містять певні (неістотні) недоліки, за вміння застосовувати теоретичні положення під час розв’язання практичних задач; 70 – 50 балів – («задовільно») виставляється за слабкі знання навчального матеріалу компонента, неточні або мало аргументовані відповіді, з порушенням послідовності викладення, за слабке застосування теоретичних положень під час розв’язання практичних задач; 49–26 балів – («не атестований» з можливістю повторного складання семестрового контролю) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння застосувати теоретичні положення під час розв’язання практичних задач; 25–00 балів – («незадовільно» з обов’язковим повторним вивченням) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння орієнтуватися під час розв’язання практичних задач, незнання основних фундаментальних положень.
Рекомендована література: Базова 1. Powers L., Snell M. Microsoft Visual Studio 2015 Unleashed 3th Edition. — Sams Publishing, 2015. — 1320 p. — ISBN-10: 0672337363, ISBN-13: 978-0672337369. 2. Penberthy W. Beginning ASP.NET for Visual Studio 2015 Wrox, 2016. — 792 p. — ISBN: 978-1-119-07742-8. 3. Бублик В.В. Об’єктно-орієнтоване програмування Підручник. — К.: ІТкнига, 2015. — 624 с.: іл. Допоміжна 1. Методичні вказівки для виконання лабораторних робіт з курсу “Об’єктно-орієнтоване програмування” для спеціальності 122 “Комп’ютерні науки” / Укл.: О.В. Оборська, В.І. Каркульовський, Н.Б. Яворський – Національний університет «Львівська політехніка», Львів, 2021. – 127 с. Інформаційні ресурси C++ Tutorial [Електронний ресурс] // Офіційний сайт Tutorialspoint. – Режим доступу : http://www.tutorialspoint.com/cprogramming.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).