Об'єктно-орієнтоване програмування на С++
Анотація навчальної дисципліни
Мета вивчення дисципліни
Формування комплексу знань і вмінь для застосування методів об’єктно-орієнтованого аналізу та моделювання для розробки програмного забезпечення на основі С++. Оволодіння практикою сучасного програмування на мові С++ в рамках парадигм об’єктно-орієнтованого підходу до створення програмних продуктів .
Практичне значення та використання отриманих знань
Оволодіння методологією об’єктно-орієнтованого підходу до створення програмного забезпечення; практичне застосування принципів абстрагування і моделювання в проектуванні програмних класів; вміння формулювати вимоги до проектування та звіти по результатах розробки і тестування; вміння вибирати ефективні структури класів і алгоритмів, які вони реалізують; вміння працювати у сучасних середовищах програмування і повною мірою використовувати їх можливості.
Основні результати навчання
ПРН04. Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення.
ПРН05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПРН12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
ПРН13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
ПРН14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
Тематика та види навчальних занять
1 тиждень
Лекція 1. Введення в ООП. Складність програмного забезпечення. Ознаки складної системи. Поняття класу та об’єкту. Канонічна форма складної системи. Алгоритмічна та ОО-декомпозицiя. Компоненти об’єктного стилю: абстрагування, обмеження доступу, модульність, ієрархія, типiзацiя, паралелізм, усталеність.
Лабораторне заняття 1. Аналіз предметної області, визначення об’єкту, його властивостей і поведінки.
2 тиждень
Лекція 2. Визначення класу. Відкрита та закрита області класів. Агрегатні класи. Представлення атрибутів і методів. inline-функції. Створення об’єкта, конструктори. Списки ініціалізації.
Практичне заняття 1. Процедурна та об’єктно-орієнтована декомпозиція. Об’єкти і їх властивості. Класи. Конструктори. Створення програм.
3 тиждень
Лекція 3. Застосування покажчиків і посилань. Покажчики і посилання в якості параметрів. Повернення результату по значенню і за адресою. Конструктор копіювання. Деструктор. Анонімні об’єкти.
Лабораторне заняття 2. Створення класу. Конструктор. Деструктор.
4 тиждень
Лекція 4. Статичні члени класу. Статичні змінні. Статичні атрибути. Статичні методи. Статичні об’єкти.
Практичне заняття 2. Деструктори. Статичні дані і методи. Мета створення деструктора. Виклик деструктора. Мета застосування статичних даних. Особливості виклику статичних методів. Створення програми.
5 тиждень
Лекція 5. Дружні функції класу. Дружні методи і класи. Ризики, пов’язані з застосуванням дружніх функцій. Константні об’єкти. Константні функції. Константні параметри.
Лабораторне заняття 3. Статичні дані та методи.
6 тиждень
Лекція 6. Перевантаження операцій. Обмеження. Перевантаження унарних і бінарних операцій. Перевантаження методами класу. Перевантаження сторонніми функціями.
Практичне заняття 3. Дружні функції класу. Перевантаження операцій. Мета застосування дружніх функцій. Умови застосування дружніх функцій. Мета перевантаження операцій. Створення програми.
7 тиждень
Лекція 7. Перевантаження спеціальних операцій. Перевизначення операції присвоювання, індексації, виділення пам'яті, вводу і виводу.
Лабораторне заняття 4. Перевантаження операцій.
8 тиждень
Лекція 8. Спадкування і ієрархія. Базові і породжені (похідні) класи. Керування доступом до елементів класу (public, private, protected). Порядок виклику конструкторів при спадкуванні. Зміна доступу до елементів класу при спадкуванні.
Практичне заняття 4. Побудова ієрархії класів. Базові і породжені (похідні) класи. Керування доступом до елементів базового класу. Переваги і недоліки спадкування. Створення програми.
Модульна контрольна робота 1.
9 тиждень
Лекція 9. Сумісність на рівні об'єктів. Поліморфізм. Вiртуальнi функцiї. Віртуальні таблиці.
Лабораторне заняття 5. Спадкування.
10 тиждень
Лекція 10. Абстрактні класи. Опис абстрактного класу. Чисті віртуальні функції. Застосування абстрактних класів. Абстрактний клас - інтерфейс
Практичне заняття 5. Віртуальні функції. Абстрактні класи. Перевантаження методів. Сумісність об’єктів в ієрархії спадкування. Мета застосування абстрактних класів. Створення програм.
11 тиждень
Лекція 11. Множинне спадкування. Застосування множинного спадкування. Проблеми множинного спадкування. Віртуальне спадкування. Спадкування і Композиція
Лабораторне заняття 6. Поліморфізм. Віртуальні методи. Абстрактні класи.
12 тиждень
Лекція 12. Шаблони. Шаблони функцій. Шаблони класів. Масиви об’єктів.
Стандартна бібліотека шаблонів.
Практичне заняття 6. Композиція об’єктів. Шаблони функцій і шаблони класів. Композиція проти спадкування. Атрибути-об’єкти. Мета застосування шаблонів функцій і класів. Створення програм.
13 тиждень
Лекція 13. Застосування бібліотеки шаблонів. Клас vector. Ітератори. Класи List і deque. Адаптери. Цикл forsch.
Лабораторне заняття 7. Робота з стандартною бібліотекою шаблонів (бібліотека контейнерів).
14 тиждень
Лекція 14. Перетворення типу об'єктів класу. Стандартні перетворення. Перетворення конструктором. Перетворюючі функції. Обмеження перетворення типів.
Практичне заняття 7. Застосування бібліотеки шаблонів. Перетворення типу об’єктів. Операції з шаблонними масивами і списками. Стандартні перетворення типів. Користувальницькі перетворення типів. Створення програм.
Модульна контрольна робота 2.
15 тиждень.
Лекція 15. Студія розроблювача Visual C++. Бібліотека MFC. MFC і архітектура застосування. Архитектура Document-View. Створення меню. Створення методів для команд меню. Створення класу користувача. Створення діалогового вікна.
Лабораторне заняття 8. Створення графічного інтерфейсу користувача.
Оцінювання результатів навчання
Оцінювання результатів навчання з дисципліни здійснюється за накопичувальною системою, яка дає можливість здобувачеві протягом семестру отримати максимально 100 балів.
Модуль 1
Повне виконання завдань на практичних заняттях – максимально 12 балів.
Оцінка за виконання лабораторних робіт – максимально 12 балів за 4 роботи.
Модульна контрольна робота – бездоганне виконання 26 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Модуль 2
Повне виконання завдань на практичних заняттях – максимально 12 балів.
Оцінка за виконання лабораторних робіт – максимально 12 балів за 4 роботи.
Модульна контрольна робота – бездоганне виконання 26 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Посилання на рекомендовані джерела
1. Behrouz A. Forouzan Richard, F. Gilberg. C++ Programming: An Object-Oriented Approach. Published by McGraw-Hill Education. 2020. – 918 р.
2. Програмування С++ в прикладах і задачах. Навчальний посібник. Загальна редакція: Васильєв О. Видавництво: Ліра К: Рік видання: 2019. – 382 с.
3. Соболь М.О. Основи програмування на С/С++ в прикладах. Частина 2: навч.-метод. посібник / Соболь М.О., Любченко Н.Ю, Івашко А.В., Паржин Ю.В., Пугачов Р.В. – Харків : НТУ "ХПІ", 2022. – 200 с
4. Changkun Ou. Modern C++ Tutorial: C++11/14/17/20 On the Fly. 2022. – 92 р.
5. Кривцова О. П. Програмування мовою С++. Технологія візуального програмування навчальний посібник. Полтава : ПНПУ імені В.Г. Короленка, 2020. – 144 с
6. Трофименко О. Г. С++. Алгоритмізація та програмування : підручник / О. Г. Трофименко, Ю. В. Прокоп, Н. І. Логінова, О. В. Задерейко. 2-ге вид. перероб. і доповн. – Одеса : Фенікс, 2019. – 477 с.