Об'єктно-орієнтоване програмування 1
Анотація навчальної дисципліни
Мета дисципліни:
забезпечити теоретико-практичну підготовку студентів, яка буде основою для подальшого вивчення дисциплін, пов’язаних з технологіями розробки програмного забезпечення, надбання студентами знань з теорії та практики об’єктно-орієнтованого аналізу і програмування.
Завдання дисципліни:
- розвити уміння аналізувати предметну область
- розвити здібності до абстрагування для виділення об’єктів та класів,
- оволодіти стилем та прийомами об’єктно-орієнтованого програмування,
- оволодіти основами тестування та налагодження програм.
Основні результати навчання
Знати кодекс професійної етики, розуміти соціальну значимість та культурні аспекти інженерії програмного забезпечення і дотримуватись їх в професійній діяльності. Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення.
Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
Форми організації освітнього процесу та види навчальних занять
Л – лекційні заняття; ЛЗ – лабораторні заняття; ПР – практичне заняття; СРС – самостійна робота здобувача вищої освіти; МКР – модульна контрольна робота; К – консультації.
Тематика та види навчальних занять
1. тиждень
Л1. Ознаки складної системи. Процедурна декомпозиція. Об’єктно-орієнтована декомпозиція. Поняття класу та об’єкту.
Стан, поведінка, унікальність об’єкту.
ПР1. Створення об’єктно-орієнтованої декомпозиції.
СРС. К.
2. тиждень
Л2. Інкапсуляція, успадкування, поліморфізм. Основні визначення щодо стилів програмування. Компоненти об’єктного стилю: абстрагування, обмеження доступу, модульність, ієрархія, типізація, паралелізм, стійкість. Знайомство з мовою програмування С++.
ЛЗ1. Визначення атрибутів і методів і стану об’єкту.
СРС. К.
3. тиждень
Л3.Члени класу – атрибути та функції. Відкрита та закрита області класів. Покажчик this. Iнiціалiзацiя об’єкта. Приклади застосування на мові С++.
ПР2. Побудова програмного класу.
СРС. К.
4. тиждень
Л4.Конструктори з параметрами та з списком ініціалізації. Конструктор копіювання. Деструктори. Приклади застосування на мові С++.
ЛЗ2. Створення конструктора копіювання на мові С++.
СРС. К.
5. тиждень
Л5.Базові і породжені класи. Керування доступом до елементів класу (public, private, protected) Множинна спадщина. Віртуальні класи.
ПР3. Побудова базового і породженого класу.
СРС. К.
6. тиждень
Л6.Порядок виклика конструкторів при спадкуванні. Віртуальні методи. Абстрактні класи. Константні об’єкти. Приклади застосування на мові С++.
ЛЗ3.Створення класів з різними видами доступу до елементів (public, private, protected) на мові С++.
СРС. К.
7. тиждень
Л7. Статичні дані, їх призначення і властивості. Статичні функції. Дружні функції. Дружні функції класу. Особливості їх застосування.
МКР1
ПР4. Застосування статичних і дружніх функцій.
СРС. К.
8. тиждень
Л8. Масиви об’єктів. Спадкування і композиція. Шаблони класів і методів. Стандартні бібліотеки шаблонів С++.
ЛЗ4. Побудова ієрархії класів.Застосування статичних даних і дружніх функцій на мові С++.
СРС. К.
9. тиждень
Л9. Перевизначення операцій. Перевизначення унарних і бінарних операцій. Застосування дружніх функцій. Перевизначення операцій читання-запису. Приклади застосування на мові С++.
ПР5. Застосування спадкування і композиції, шаблонів класів і методів.
СРС. К.
10. тиждень
Л10. Реалiзацiя ОО-пiдходу для програмування у середовищі Visual C++. Бібліотека MFC. Каркас застосування. Документи і види.
ЛЗ6. Створення класу користувача в середовищі Visual C++
СРС. К.
11. тиждень
Л11. Поняття конструкторів і деструкторів. Приклади створення конструктів в середовищі Visual C ++.
ПР6. Застосування конструкторів і деструкторів.
СРС. К.
12. тиждень
Л12. Поняття перегруження операторів С++. Перегруження через дружні функціі. Перегруження операторів вводу/виводу. Приклади перегруження функцій у середовищі Visual C++.
ЛЗ6. Створення перегружених операторів у середовищі Visual C++.
СРС. К.
13. тиждень
Л13. Конструктори копіювання у С++. Конструктори перетворення, ключові слова explicit та delete. Поверхневе та глибоке копіювання. Приклади конструкторів копіювання у середовищі Visual C++.
ПР7. Створення конструкторів копіювання.
СРС. К.
14. тиждень
Л14.Типи зв’язків у С++. Композиція об’єктів. Агрегація. Асоціація. Залежність. Контейнерні класи.
ЛЗ7. Створення програми, яка містить класи та має різні типи зв’язків у середовищі Visual C++.
СРС. К.
15. тиждень
Л15.Спадковість у Visual C++. Базова спадковість. Порядок побудови дочірніх класів. Конструктори та ініціалізація дочірніх класів.Спадкування і специфікатор доступу protected. Перевизначення методів батьківського класу. Множинне успадкування.
МКР2
ПР8.Побудова множинного успадкування на мові С++.
СРС. К.
16. тиждень
Л16. Віртуальні функції в C ++. Вказівники, посилання і спадкування. Віртуальні функції і поліморфізм. Віртуальні деструктори і віртуальне присвоювання.
ЛЗ8. Застосування віртуальних функцій у середовищі Visual C++.
СРС. К.
Самостійна робота
Процедура оцінювання
Система оцінювання рівня навчальних досягнень ґрунтується на принципах ЄКТС та є накопичувальною. Здобувачі протягом семестру готуються до лекційних, практичних та лабораторних занять, виконують 2 модульні контрольні роботи.
Для забезпечення оперативного контролю за успішністю та якістю рівня навчальних досягнень здобувачів вищої освіти дисципліна поділяється на два семестрові модулі
Кожний модуль оцінюється у максимально можливі 50 балів:
Модульна робота складається з теоретичної частини та практичної частини - задачі.
Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №1 становить 6 балів, за виконання практичної частини – 24 бали. Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №2 становить 6 балів, за виконання практичної частини – 24 бали.
Кількість запитань теоретичної частини модульної роботи №1 – 3. Кожна правильна відповідь теоретичної частини оцінюється в 2 бали.
Кількість запитань теоретичної частини модульної роботи №2 – 2. Кожна правильна відповідь теоретичної частини оцінюється в 3 бали.
Правильне розв’язання задачі модульної роботи №1 оцінюється в 24 бали. Задача вважається розв’язаною, якщо при її розв’язанні коректно записано код на мові С++, застосовано конструктор, деструктор, статичні дані і методи, показано застосування об'єктів класів.
Правильне розв’язання задачі модульної роботи №2 оцінюється в 24 бали. Задача вважається розв’язаною, якщо при її розв’язанні коректно записано код на мові Java, застосовано інтерфейс, конструктор, виконано обробку виняткової ситуації, використані static - члени класу, показано застосування об’єктів класів.
Максимальна оцінка, яку може отримати здобувач за всі виконані види робіт – 100 балів.
Підсумковим контролем з дисципліни є усний екзамен, білет до якого складається з теоретичної частини (5 запитань) та практичної частини -задачі. За бездоганну відповідь на кожне теоретичне питання студент отримує – 8 балів. За бездоганне виконання завдання практичної частини студент отримує – 60 балів.
Максимальна оцінка за правильні відповіді на всі питання екзаменаційного білету становить 100 балів.
Семестровий модуль № 1
ЛЗ1- ЛЗ3. Оцінка за виконання – 10 балів. Термін виконання – 1-8 тиждень.
ПР1- ПР4. Оцінка за виконання – 10 балів. Термін виконання – 1-8 тиждень.
МК1. Модульна контрольна робота – 30 балів (8 тиждень). Перескладання можливе протягом 9–11 тижнів за розкладом консультацій.
Семестровий модуль № 2
ЛЗ4- ЛЗ7. Оцінка за виконання – 10 балів. Термін виконання – 9-15 тиждень.
ПР5- ПР8. Оцінка за виконання – 10 балів. Термін виконання – 9-15 тиждень.
МК2. Модульна контрольна робота – 30 балів (14 тиждень).
Умови допуску до підсумкового контролю
До екзамену допускаються здобувачі вищої освіти, які виконали всі види навчальних елементів навчальної дисципліни на не менш, ніж на 60 %.
Екзамен відбувається за всіма тематичними (змістовними) модулями дисципліни.
Політика освітнього процесу
Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання; за необхідністю з метою з’ясування всіх незрозумілих під час самостійної та індивідуальної роботи питань, відвідувати консультації викладача. Дотримуватись принципів академічної доброчесності.
Виконаний не свій варіант завдання здобувачем не оцінюється.
Робота, яка виконана після встановлених викладачем термінів, не приймається.
Відсутність здобувача на екзамені або на контрольній роботі відповідає оцінці «0».
Складання/перескладання екзаменів – за встановленим деканатом розкладом.
Під час лекції здійснювати телефонні дзвінки забороняється.
Заборонено використання будь-яких підручників, посібників, конспектів лекцій, шпаргалок під час проходження екзамену з дисципліни.
Документи (файли), що додаються: Робоча програма навчальної дисципліни.
Література
1. Хольгер Гаст Объектно-ориентированное проектирование. Концепции и программный код Издательство Вильямс: 2018. - 1040 с.
2. Хорев П. Б. Объектно-ориентированное программирование с примерами на C#. Издательство Форум: 2020. - 200 с.
3. Бьярне Страуструп Язык программирования C++. Краткий курс. Издательство: Диалектика, 2020. - 320 с.
4. Р. Лафоре Объектно-ориентированное программирование в С++. Питер, 2011 - 923 с.
5. Роберт Седжвик Алгоритмы на C++. Анализ структуры данных. Сортировка. Поиск. Алгоритмы на графах Издательство Вильямс: 2016. - 1056 с
6. Стивен Прата. Язык программирования C++. Лекции и упражнения Издательство Диалектика: 2016.-1244 с.
Методична література
1. Кунгурцев О.Б. Конспект лекцій з дисципліни «Об’єктно-орієнтоване програмування» для студентів спеціальності 121 – Інженерія програмного забезпечення, – Одеса: ОНПУ, 2017. - 120 с. (КЛ08736)
2. Кунгурцев О.Б.. Методичні вказівки до практичних занять з дисципліни «Об’єктно-орієнтоване програмування» для студентів спеціальності 121 - Інженерія програмного. – Одеса: ОНПУ, 2017. - 28 с. (МВ07935)
3. Кунгурцев О.Б Методичні вказівки до лабораторних робіт з дисципліни «Об’єктно-орієнтоване програмування» для студентів спеціальності 121 «Інженерія програмного забезпечення». – Одеса, ОНПУ, 2017. – 18 с. (МВ07937)
4. Кунгурцев О.Б Методичні вказівки до курсової роботи з дисципліни «Об’єктно-орієнтоване програмування» для студентів спеціальності 121 – «Інженерія програмного забезпечення. - Одеса; ОНПУ, 2017. - 8 с. (МВ07936)
Додаткова література
1. Секунов Н.Ю. Самоучитель Visual C++./Н.Ю. Секунов –СПБ: БХВ, 2005. – 1072 с.
2. Харви Дейтел. Как программировать на С : Третье издание./ Харви Дейтел, Пол Дейтел. -М.: Бином-Пресс, 2002.-1168 с.
3. Гради Буч. Объектно-ориентированный анализ и проектирование./ Гради Буч – СПБ : Бином, 2000. -560с.
4. Джон Шарп Microsoft Visual C#. Подробное руководство. 8-е издание Издательство: Питер Пресс 2017.-848 с.
5. Рик Гаско Объектно Ориентированное Программирование Издательство: Солон 2018.-298 с.