Об'єктно-орієнтоване програмування на С++
Мета вивчення дисципліни - формування комплексу знань і вмінь для застосовування методів об’єктно-орієнтованого аналізу та моделювання для розробки програмного забезпечення. Оволодіння практикою сучасного програмування в рамках парадигм об’єктно-орієнтованого підходу до створення програмних продуктів.
Задачі вивчення дисципліни:
• розвити уміння аналізувати предметну область
• розвити здібності до абстрагування для виділення об’єктів та класів,
• оволодіти стилем та прийомами об’єктно-орієнтованого програмування,
• оволодіти основами тестування та налагодження програм.
У процесі вивчення курсу зосереджується увага на засвоєнні знань з таких питань: вимоги до ОО-стилю програмування, принципи інкапсуляції, методи побудови ієрархії класів, методи реалізації поліморфізму, технології застосування бібліотек класів, методи візуального програмування.
Дисципліна є обов’язковою.
Дисципліна базується на знаннях, отриманих при вивченні дисциплін:
• Організація даних в обчислювальних системах,
• Комп’ютерна дискретна математика
• Основи програмування,
• Іноземна мова.
Лекційні заняття
Змістовий модуль 1. Концепція об’єктно-орієнтованого пiдходу
Лекція 1. Введення в ООП ([1], c. 273-275; [2], c.163-171)
- Складнiсть програмного забезпечення.
- Процедурна і об’єктно-орієнтована декомпозиція.
- Поняття класу та об’єкту.
- Стан, поведінка, унікальність об’єкту.
- Інкапсуляція, успадкування, поліморфізм.
- Об’єктно-орієнтований стиль програмування.
- Основні визначення щодо стилів програмування. Компоненти об’єктного стилю: абстрагування, обмеження доступу, модульнiсть, iєрархiя, типізацiя, паралелізм, стiйкість.
Змістовий модуль 2. Класи та об’єкти
Лекція 2. Визначення класу. ([1], c. 275-294; [2], c. 178-186; [3], c. 104-108,1 70-171, 220-221)
- Вiдкрита та закрита області класів.
- Агрегатні класи.
- Представлення атрибутів і методів.
- inline-функції.
- Створення об’єкта, конструктори.
- Списки ініціалізації.
Лекція 3. Застосування у класах покажчиків і посилань. ([1], c. 283-294,380-405; [2], c. 209-219]; [3], c. 11, 133, 143-149, 224)
- Повернення результату по значенню і за адресою.
- Конструктор копіювання.
- Деструктор.
- Анонімні об’єкти.
Змістовий модуль 3. Статичні члени класу
Лекція 4. Статичні члени класу. ([1], c. 302-311; [3], c. 187-190)]
- Статичні змінні.
- Статичні атрибути.
- Статичні методи.
- Статичні об’єкти.
Змістовий модуль 4. Дружні функції. Константні об’єкти
Лекція 5. Дружні функції. Константні об’єкти. ([3], c. 95-97, 101-104, 174-175 ,235 , 616-623)
- Дружні функції.
- Дружні класи.
- Дружні методи класів.
- Ризики, пов’язані з застосуванням дружніх функцій.
- Константні функції.
- Константні параметри.
- Константні об’єкти.
Змістовий модуль 5. Перевантаження операцій
Лекція 6. Перевантаження операцій. ([1], c. 602-625; [3], c. 199-209)
- Обмеження.
- Перевантаження унарних і бінарних операцій.
- Перевантаження методами класу.
- Перевантаження сторонніми функціями.
Лекція 7. Перевантаження спеціальних операцій. ([1], c. 602-625; [2], c. 262-264; [3], c. 210-214)
- Перевантаження операції присвоювання.
- Перевантаження індексації.
- Перевантаження виділення пам’яти.
- Перевантаження вводу і виводу.
Змістовий модуль 6 Спадкування
Лекція 8. Спадкування і ієрархія. ([1], c. 496-519]; [2], c. 198-206; [3], c. 172-173)
- Базові і породжені (похідні) класи.
- Керування доступом до елементiв класу (pablic, private, protected).
- Порядок виклику конструкторів при спадкуванні.
- Зміна доступу до елементів класу при спадкуванні.
Лекція 9. Поліморфізм. ([1], c. 553-567]; [2], c. 241-244]; [3], c. 129-132,195-198)
- Сумісність на рівні об'єктів.
- Поліморфізм.
- Вiртуальнi функцiї.
- Віртуальні таблиці.
Лекція 10. Абстрактні класи. ([4], c. 214-217)
- Опис абстрактного класу.
- Чисті віртуальні функції.
- Застосування абстрактних класів.
- Абстрактний клас – інтерфейс.
Лекція 11. Множинне спадкування. ([2], c. 244-248; [3], c. 191, 175)
- Застосування множинного спадкування.
- Проблеми множинного спадкування.
- Віртуальне спадкування.
- Спадкування і Композиція
Змістовий модуль 7. Шаблони
Лекція 12. Шаблони. ([1], c. 693-713; [2], c. 219-223,254-270; [3], c. 413-424)
- Шаблони функцій.
- Шаблони класів.
- Масиви об’єктів.
- Стандартна бібліотека шаблонів.
Лекція 13. Застосування бібліотеки шаблонів. ([1], c. 852-910; [2], c. 319-333; [3], c. 32-40, 263-293)
- Клас vector.
- Ітератори.
- Класи List і deque.
- Адаптери.
Змістовий модуль 8. Перетворення типу об'єктів класу
Лекція 14. Перетворення типу об'єктів класу. ([1], c. 625-626; [3], c. 482-487)
- Стандартні перетворення.
- Перетворення конструктором.
- Перетворюючі функції.
- Обмеження перетворення типів.
Змістовий модуль 9. Графічний інтерфейс користувача
Лекція 15. Студія розроблювача Visual C++. ([7], c. 7-55)
- Бібліотека MFC. MFC і архітектура застосування.
- Архітектура Document-View.
- Створення меню.
- Створення методів для команд меню.
- Створення класу користувача.
- Створення діалогового вікна.
Практичні заняття
Мета практичних занять – засвоєння здобувачами теоретичних основ та практичних аспектів використання об’єктно-орієнтованого підходу та мови С++ для розробки програмного забезпечення.
Практичні заняття проводяться згідно навчального плану в обсязі 14 годин та включають 7 тем, які наведено в табл. 3.3.
Таблиця 3.3 – Перелік тем і зміст практичних робіт
Обсяг у год. Назва та стислий зміст заняття Мета роботи РН за ОП
СЕМЕСТРОВИЙ МОДУЛЬ 1
ЗМІСТОВИЙ МОДУЛЬ 2. Класи та об’єкти
2 Процедурна та об’єктно-орієнтована декомпозиція. Об’єкти і їх властивості. Класи. Конструктори. Створення програм. [2], c.163-171) ([1], c. 283-294,380-405; [2], c. 209-219]; [3], c. 11, 133, 143-149, 224)
Освоєння практики ОО-аналізу, набуття знань щодо життєвого циклу ПЗ ПР05
ЗМІСТОВИЙ МОДУЛЬ 3. Статичні члени класу
2 Дестркутори. Статичні дані і методи. Мета створення деструктора. Виклик деструктора. Мета застосування статичних даних. Особливості виклику статичних методів. Створення програми. ([3], c. 11, 133, 143-149, 224); [3], c. 187-190)
Оволодіння практикою вибору вихідних даних, застосування ефективних підходів щодо проектування ПЗ. ПР12
ЗМІСТОВИЙ МОДУЛЬ 5. Перевантаження операцій.
2 Дружні функції класу. Перевантаження операцій. Мета застосування дружніх функцій. Умови застосування дружніх функцій. Мета перевантаження операцій. Створення программ. ([1], c. 602-625; [3], c. 199-209) Оволодіння ефективними підходами щодо проектування ПЗ і розробки алгоритмів. ПР05, ПР13
СЕМЕСТРОВИЙ МОДУЛЬ 2
ЗМІСТОВИЙ МОДУЛЬ 6. Спадкування
2 Побудова ієрархії класів. Базові і породжені (похідні) класи. Керування доступом до елементiв базового класу. Переваги і недоліки спадкування. Створення програми. ([1], c. 496-519]; [2], c. 198-206; [3], c. 172-173)
Оволодіння практикою моделювання і ефективними підходами щодо проектування програмних класів.
ПР12
2 Віртуальні функції. Абстрактні класи. Перевантаження методів. Сумісність об’єктів в ієрархії спадкування. Мета застосування абстрактних класів. Створення програм. ( [3], c. 129-132,195-198;
[4], c. 214-217)
Оволодіння ефективними підходами застосування ОО-технологій проектування ПЗ. ПР04
ЗМІСТОВИЙ МОДУЛЬ 7. Шаблони
2 Композиція об’єктів. Шаблони функцій і шаблони класів. Композиція проти спадкування. Атрибути-об’єкти. Мета застосування шаблонів функцій і класів. Створення програм. ([2], c. 219-223,254-270) Оволодіння розробкою алгоритмів створення ПЗ ПР13
ЗМІСТОВИЙ МОДУЛЬ 8. Перетворення типу об'єктів класу
2 Застосування бібліотеки шаблонів. Перетворення типу об’єктів. Операції з шаблонними масивами і списками. Стандартні перетворення типів. Користувальницькі перетворення типів. Створення програм. . ([1], c. 852-910)
Оволодіння практикою застосування інструментальних програмних засобів і можливостей командної роботи. ПР14
Лабораторні заняття
Мета лабораторних занять – отримання здобувачами практичних навичок використання об’єктно-орієнтованого підходу та мови С++ для розробки програмного забезпечення.
Лабораторні заняття проводяться згідно навчального плану в обсязі 16 годин та включають 8 тем, які наведено в табл. 3.4.
Таблиця 3.4 – Перелік тем і зміст лабораторних занять
Обсяг в годинах Назва та стислий зміст роботи Мета роботи РН за ОП
СЕМЕСТРОВИЙ МОДУЛЬ 1
ЗМІСТОВИЙ МОДУЛЬ 1. Концепція об’єктно-орієнтованого пiдходу
2 Лабораторне заняття1. Аналіз предметної області, визначення об’єкту, його властивостей і поведінки. ([1], c. 273-275; [2], c.163-171)
Отримання практичних навичок з обстеження, збору і аналізу вимог, вибору вихідних даних..
ПРН05
ЗМІСТОВИЙ МОДУЛЬ 2. Класи та об’єкти
2 Лабораторне заняття 2. Створення класу. Конструктор. Деструктор. ([3], c. 104-108,1 70-171, 220-221; [3], c. 11, 133, 143-149, 224)
Отримання практичних навичок з реалізації ОО-технологій і дотримання корпоративних нормативів.
ПРН04ПРН12
ЗМІСТОВИЙ МОДУЛЬ 3. Статичні члени класу
2 Лабораторне заняття 3. Статичні дані та методи.
([1], c. 302-311; [3], c. 187-190)
Отримання практичних з застосування ефективних підходів щодо проектування ПЗ.
.
ПРН12
ЗМІСТОВИЙ МОДУЛЬ 5. Перевантаження операцій
2 Лабораторне заняття 4. Перевантаження операцій. ([1], c. 602-625; [3], c. 199-209)
Отримання практичних навичок з розробки алгоритмів і ефективнї їх реалізації. ПРН13
СЕМЕСТРОВИЙ МОДУЛЬ 2
ЗМІСТОВИЙ МОДУЛЬ 6. Спадкування
2 Лабораторне заняття 5. Спадкування.
([2], c. 198-206) Отримання практичних навичок ефективної реалізації ОО програмного забезпечення.
ПРН05
2 Лабораторне заняття 6. Поліморфізм. Віртуальні методи. Абстрактні класи. ([3], c. 129-132,195-198; [4], c. 214-217)
Отримання практичних навичок ефективної реалізації ОО програмного забезпечення. ПРН05,
ПРН12
ЗМІСТОВИЙ МОДУЛЬ 7. Шаблони
2 Лабораторне заняття 7. Робота з стандартною бібліотекою шаблонів (бібліотека контейнерів). ([1], c. 852-910)
Отримання практичних навичок з використання інструментів бібліотеки для ефективної реалізації ОО програмування. ПРН14
ЗМІСТОВИЙ МОДУЛЬ 9. Графічний інтерфейс користувача
2 Лабораторне заняття 8. Створення графічного інтерфейсу користувача. ([7], c. 7-55)
Отримання практичних навичок з документування, і командної розробки ПЗ ПРН14
Критерії оцінювання підсумкового контролю
Підсумковим контролем з дисципліни є усний екзамен.
Підсумковий контроль з дисципліни складається з двох частин: теоретичної та практичної. Мінімальна кількість балів, що зараховується як позитивний результат, дорівнює 60 (за 100-бальною шкалою).
Бали розподіляються наступним чином: 40 балів – теоретична частина та 60 балів – практична.
Екзаменаційний білет містить 5 теоретичних питання рівної складності і практичну частину – задачу.
За бездоганну відповідь на кожне теоретичне питання здобувач отримує – 8 балів. При цьому відповідь вважається бездоганною, якщо студент повністю розкрив суть питання, послідовно і логічно його доповів, навів приклади.
Кожний етап завдання практичної частини іспиту вважається виконаним бездоганно, якщо при його розв’язанні коректно побудовано відповідний фрагмент програми відповідно до завдання.
Екзамен враховується не складеним, якщо здобувач отримав незадовільну оцінку.
Питання теоретичної частини може бути присвячено концепції об’єктно-орієнтованого програмування, принципам побудови програм, правилам застосування конструкцій мови С++ для отримання ефективних результатів, технології роботи з інструментальними програмними засобами. Відповідь на питання повинна мати загальне формулювання (6 балів), приклад (2 бали).
Практична частина представлена задачею, рішення якої передбачає виконання 5 етапів. На першому етапі потрібно створити ієрархію з 3 класів відповідно заданої предметної області і визначення їх атрибутів і методів абстрактного класу. Другий етап передбачає уточнення методів другого і третього класів, уведення перевантажених методів. На третьому етапі потрібно перевантажити одну операцію введення в одну операцію виведення для роботи з об’єктами класів. П’ятий етап передбачає створення функції main, побудову об’єктів класів і виконання операцій з об’єктами для демонстрації виконання функціональних вимог.
Практична частина іспиту вважається виконаною бездоганно при наявності розв’язання задачі, при цьому коректно побудовано ієрархію класів, добре обрані і розподілені атрибути класів, методи класів реалізують потрібні алгоритми, створені об’єкти повністю реалізовані, об’єкти класів демонструють виконання всього заданого функціоналу. Крім цього усі значущі конструкції мають коментарі.
За виконання кожного етапу практичної частини бали можуть бути зняті:
15 балів – за повну відсутність виконання;
10 балів – рішення не отримане або не вірне, але при цьому хід розв’язання та усі використані засади обрані вірно;
5 балів – наведене правильне рішення, але при цьому є помилки у розв’язанні;
4 балів – наведене правильне рішення, але при цьому не повністю виконані обов’язкові пояснення;
3 балів – за неправильне тлумачення вхідних даних, що не порушило загалом правильного ходу розв’язання задачі;
2 балів – за допущену помилку, що не вплинула на відповідь та загальний хід розв’язання питання;
1 бал – за нераціональне розв’язання завдання при наявності докладних пояснень та вірного кінцевого результату.
Якщо здобувач відмовився відповідати, то він отримує незадовільну оцінку.
Екзамен враховується нескладеним, якщо здобувач отримав незадовільну оцінку.
Критерії оцінювання модульних контрольних робіт
Модульна контрольна робота виконуються у письмовій формі. Максимальна оцінка за їх бездоганне виконання становить 25 балів за першу роботу (0,67 кредитів).
Модульна робота складається з теоретичної частини та практичної частини - задачі. Максимальна оцінка за правильне виконання теоретичної частини модульної роботи становить 5 балів, за виконання практичної частини – 20 балів.
Кількість запитань теоретичної частини – 5. Кожна правильна відповідь оцінюється в 1 бал.
Кількість етапів рішення задачі практичної частини – 5. Правильне розв’язання кожної задачі оцінюється в 4 бали. Задача вважається розв’язаною, якщо при її розв’язанні використані конструкції мови і правильно реалізовані алгоритми у методах.
За виконання кожного завдання практичної частини бали можуть бути зняті:
4 балів – за повну відсутність виконання завдання практичної частини;
3 бали – за некоректне застосування синтаксису мови С++;
2 бали – за допущені помилки в реалізації алгоритмів;
1 бал – за допущену помилку, що не вплинула на відповідь та загальний хід розв'язання задачі
Задача не зараховується, якщо повністю відсутнє її розв’язання.
Критерії оцінювання виконання накопичувальної частини дисципліни
Накопичувальна частина дисципліни складається з виконання 8-ми лабораторних робіт та 7-ми практичних завдань.
Критерії оцінювання виконання та захисту лабораторної роботи
Оцінювання лабораторної роботи виконується виходячи з наступних вимог:
- завдання до лабораторної роботи має бути повністю виконаним;
- протокол має містити повний опис виконаної роботи;
- здобувач повинен знати теоретичний матеріал, який пов’язаний з завданням до лабораторної роботи;
- здобувач повинен пояснити усі рішення, які він прийняв розв’язуючи задачу;
- здобувач повинен захистити лабораторну роботу у строк.
Перші дві вимоги обов’язкові. Виконання кожної з останніх трьох вимог оцінюється у 0,5 бала. За бездоганне виконання роботи, що представлена у строк, здобувач отримує 5,0 бали. Максимальний «внесок» лабораторних робіт у оцінку модульного контролю становить 30 балів.
Критерії оцінювання виконання практичних завдань
У процесі практичного заняття здобувачі індивідуально вирішують завдання. Якщо задача була вирішена правильно, у повному об’ємі, то здобувач отримує оцінку максимальний можливий бал, якщо відповідь не повна, здобувач отримує частину цих балів. Здобувач, який не з’явився на заняття без поважних причин, отримує оцінку 0. Наприкінці контрольного періоду для кожного здобувача підраховується сума балів, що він міг заробити (С1) та реально отримана сума балів (С2). Кількість балів, що зараховується у семестровий модуль розраховується за формулою 12*С1/С2.
ПР05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПР12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
ПР14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
ПР13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
ПР04. Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення.