Об'єктно-орієнтоване програмування
Анотація навчальної дисципліни
Мета дисципліни:
забезпечити теоретико-практичну підготовку студентів, яка буде основою для подальшого вивчення дисциплін, пов’язаних з технологіями розробки програмного забезпечення., надбання студентами знань з теорії та практики об’єктно-орієнтованого аналізу і програмування.
Завдання дисципліни:
- розвити уміння аналізувати предметну область
- розвити здібності до абстрагування для виділення об’єктів та класів,
- оволодіти стилем та прийомами об’єктно-орієнтованого програмування,
- оволодіти основами тестування та налагодження програм.
Основні результати навчання
Знати кодекс професійної етики, розуміти соціальну значимість та культурні аспекти інженерії програмного забезпечення і дотримуватись їх в професійній діяльності.
Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення.
Форми організації освітнього процесу та види навчальних занять
Л – лекційні заняття; ЛЗ – лабораторні заняття; ПР – практичне заняття; СРС – самостійна робота здобувача вищої освіти; КР – курсова робота; МКР – модульна контрольна робота; К – консультації.
Тематика та види навчальних занять
1. тиждень
Л1. Ознаки складної системи. Процедурна декомпозиція. Об’єктно-орієнтована декомпозиція. Поняття класу та об’єкту. Стан, поведінка, унікальність об’єкту. Інкапсуляція, успадкування, поліморфізм. Основні визначення щодо стилів програмування. Компоненти об’єктного стилю: абстрагування, обмеження доступу, модульнiсть, iєрархiя, типізацiя, паралелізм, стiйкість
ЛЗ1. Визначення атрибутів і методів і стану об’єкту.
СРС. К.
2. тиждень
Л2. Члени класу – атрибути та функції. Вiдкрита та закрита області класів. Покажчик this. Iнiціалiзацiя об’єкта. Конструктори з параметрами та з списком инiцiалiзацiї. Конструктор копiювання. Деструктори.
ПР1. Побудова програмного класу.
СРС. К.
3. тиждень
Л3.Базові і породжені класи. Керування доступом до елементів класу (pablic, private, protected). Множинна спадщина. Віртуальні класи. Порядок виклика конструкторів при спадкуванні. Віртуальні методи. Абстрактні класи. Константні об’єкти.
ЛЗ2. Класи у мові С++
СРС. К.
4. тиждень
Л4. Статичні дані, їх призначення і властивості. Статичні функції. Дружні функції.
Дружнi функції класу. Особливості їх застосування.
ПР2. Побкдова ієрархії класів.Застосування статичних даних і дружніх функцій.
СРС. К.
5. тиждень
Л5. Масиви об’єктів. Спадкування і композиція. Шаблони класів і методів. Стандартні бібліотеки шаблонів.
ЛЗ3. Спадкування у мові С++
СРС. К.
6. тиждень
Л6. Перевизначення операцій. Перевизначення унарних і бінарних операцій. Застосування дружніх функцій. Перевизначення операцій читання-запису.
ПР3. Застосування спадкування і композиції, шаблонів класів і методів.
СРС. К.
7. тиждень
Л7. Реалiзацiя ОО-пiдходу для програмування у середовищі Visual C++. Бібліотека MFC. Каркас застосування. Документи і види.
ЛЗ4. Створення класу користувача в середовищі Visual C++
СРС. К.
8. тиждень
Л8. Особливості та переваги мови Java. Процес компілювання та виконання програми. Коментарі, типи даних, операції. Елементарні програми на мові Java. Клас String. Організація розгалужень та циклів. Оператори break i continue. Застосування масивів.
ПЗ4. Застосування операторів break i continue і масивів в програмах на Java..
МКР1. СРС. К.
9. тиждень
Л9. Мова Java. Структура класу. Конструктори. Об’єкти як параметри. Об’єкти як значення, що повертаються. Ключове слово this. Статичні дані та методи. Опис констант. Знищення об’єкта метод finalize.
ЛЗ4. Робота з рядками. Мова Java.
СРС. К.
10. тиждень
Л10. Суперклас та підклас. Сумісність об’єктів в ієрархії успадкування. Динамічне зв’язування, поліморфізм. Абстрактні класи. Використання ключового слова final для запобігання успадкуванню. Клас Object.
ПЗ5. Створення ієрархії класів. Мова Java.
СРС. К.
11. тиждень
Л11. Інтерфейси – загальні положення. Реалізація інтерфейсу. Посилання на інтерфейс. Реалізація у одному класі декількох інтерфейсів. Успадкування інтерфейсів.
ЛЗ5. Спадкування у мові Java..
СРС. К.
12. тиждень
Л12. Класифікація виняткових ситуацій. Принцип обробки виняткової ситуації. Оператори try і catch. Вкладені оператори try. Генерація виняткової ситуації.
ПЗ6. Застосування інтерфейсів в програмах на мові Java.
СРС. К.
13. тиждень
Л13. Пкети, оператор import. Пакет Swing. Фрейми. Зображення геометричних фігур. Управління кольором. Виведення тексту. Управління компоновкою.
ЛЗ7 Інтерфейси та обробка виняткових ситуацій в мові Java
СРС. К.
14. тиждень
Л14. Обробка подій. Внутрішні класи. Обробка подій, пов’язаних з клавіатурою. Обробка подій, пов’язаних з мишкою.
ПЗ7. Програми з застосуванням інтерфейсів і виняткових ситуацій.
МКР2.СРС. К.
15. тиждень
Л15. Створення елементів інтерфейсу користувача. Ієрархія класів компонентів Swing. Управління кольором. Виведення тексту. Управління компоновкою.
ЛЗ8. Графічне середовище розробки програм користувача Java Net Beans
СРС. К.
Індивідуальна робота
Виконується КР. Метою курсової роботи є поглиблення та закріплення знань, одержаних при вивченні дисципліни «Об’єктно-орієнтоване програмування», та набуття практичних навичок у проектуванні та налагодженні програм, що застосовують класи та об’єкти. . Курсова робота передбачає створення ієрархії класів, застосування композиції, проектування методів, що забезпечують інтерфейс користувача.
1–2 тижні
Одержання й уточнення завдання.
3 тиждень
Визначення проблеми і користувачів.
4 тиждень
Уточнення предметної області у вигляді діаграм діяльності.
5 – 6 тижні
Розробка варіантів використання.
7 тиждень
Визначення концептуальних класів.
8 тиждень
Розробка діаграми концептуальних класів.
9–10 тижні
Розробка діаграм взаємодії.
11 тиждень
Створення специфікації програмних класів.
12 тиждень
Розробка чек-листа.
13 тиждень
Оформлення пояснювальної записки.
14 тиждень
Захист курсової роботи.
Процедура оцінювання
Система оцінювання рівня навчальних досягнень ґрунтується на принципах ЄКТС та є накопичувальною. Здобувачі протягом семестру готуються до лекційних, практичних та лабораторних занять, виконують 2 модульні контрольні роботи, КР.
Для забезпечення оперативного контролю за успішністю та якістю рівня навчальних досягнень здобувачів вищої освіти дисципліна поділяється на два семестрові модулі
Кожний модуль оцінюється у максимально можливі 50 балів:
Модульна робота складається з теоретичної частини та практичної частини - задачі.
Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №1 становить 6 балів, за виконання практичної частини – 24 бали. Максимальна оцінка за правильне виконання теоретичної частини модульної роботи №2 становить 6 балів, за виконання практичної частини – 24 бали.
Кількість запитань теоретичної частини модульної роботи №1 – 3. Кожна правильна відповідь теоретичної частини оцінюється в 2 бали.
Кількість запитань теоретичної частини модульної роботи №2 – 2. Кожна правильна відповідь теоретичної частини оцінюється в 3 бали.
Правильне розв’язання задачі модульної роботи №1 оцінюється в 24 бали. Задача вважається розв’язаною, якщо при її розв’язанні коректно записано код на мові С++, застосовано конструктор, деструктор, статичні дані і методи, показано застосування оь’єктів класів.
Правильне розв’язання задачі модульної роботи №2 оцінюється в 24 бали. Задача вважається розв’язаною, якщо при її розв’язанні коректно записано код на мові Java, застосовано інтерфейс, конструктор, виконано обробку виняткової ситуації, використані static - члени класу, показано застосування об’єктів класів.
Оцінювання курсової роботи виконується виходячи з наступних вимог.
Визначення проблеми і користувачів – 4 балів.
Уточнення предметної області у вигляді діаграм діяльності – 8 балів.
Розробка варіантів використання 10 балів.
Визначення концептуальних класів – 5 балів.
Розробка діаграми концептуальних класів – 5 бали.
Розробка діаграм взаємодії – 10.
Створення специфікації програмних класів 5 балів..
Розробка чек-листа – 8 балів.
Оформлення пояснювальної записки -5 балів.
Захист курсової роботи -40 балів..
Максимальна оцінка, яку може отримати здобувач за всі виконані види робіт – 100 балів.
Підсумковим контролем з дисципліни є усний екзамен, білет до якого складається з теоретичної частини (5 запитань) та практичної частини -задачі. За бездоганну відповідь на кожне теоретичне питання студент отримує – 8 балів. За бездоганне виконання завдання практичної частини студент отримує – 60 балів.
Максимальна оцінка за правильні відповіді на всі питання екзаменаційного білету становить 100 балів.
Семестровий модуль № 1
ЛЗ1- ЛЗ3. Оцінка за виконання – 10 балів. Термін виконання – 1-8 тиждень.
ПР1- ПР4. Оцінка за виконання – 10 балів. Термін виконання – 1-8 тиждень.
КР (ч.1). Оцінка за виконання – 30 балів. Термін надання – 8 тиждень.
МК1. Модульна контрольна робота – 30 балів (8 тиждень). Перескладання можливе протягом 9–11 тижнів за розкладом консультацій.
Семестровий модуль № 2
ЛЗ4- ЛЗ7. Оцінка за виконання – 10 балів. Термін виконання – 9-15 тиждень.
ПР5- ПР8. Оцінка за виконання – 10 балів. Термін виконання – 9-15 тиждень.
КР(ч.2). Оцінка за виконання – 70 балів. Термін надання 14 тиждень.
МК2. Модульна контрольна робота – 30 балів (14 тиждень).
Умови допуску до підсумкового контролю
До екзамену допускаються здобувачі вищої освіти, які виконали всі види навчальних елементів навчальної дисципліни на не менш, ніж на 60 %.
Екзамен відбувається за всіма тематичними (змістовними) модулями дисципліни.
Політика освітнього процесу
Здобувач зобов’язаний своєчасно та якісно виконувати всі отримані завдання; за необхідністю з метою з’ясування всіх незрозумілих під час самостійної та індивідуальної роботи питань, відвідувати консультації викладача. Дотримуватись принципів академічної доброчесності.
Виконаний не свій варіант завдання здобувачем не оцінюється.
Робота, яка виконана після встановлених викладачем термінів, не приймається.
Відсутність здобувача на екзамені або на контрольній роботі відповідає оцінці «0».
Складання/перескладання екзаменів – за встановленим деканатом розкладом.
Під час лекції здійснювати телефонні дзвінки забороняється.
Заборонено використання будь-яких підручників, посібників, конспектів лекцій, шпаргалок під час проходження екзамену з дисципліни.
Документи (файли), що додаються: Робоча програма навчальної дисципліни.
Література
1. Хольгер Гаст Объектно-ориентированное проектирование. Концепции и программный код Издательство Вильямс: 2018. - 1040 с.
2. Хорев П. Б. Объектно-ориентированное программирование с примерами на C#. Издательство Форум: 2020. - 200 с.
3. Бьярне Страуструп Язык программирования C++. Краткий курс. Издательство: Диалектика, 2020. - 320 с.
4. Коузен К. Современный Java: рецепты программирования / пер. с англ. А.А. Слинкина.- М.:ДМК Пресс, 2018, - 247 с.
5. Васильєв О.М. Програмування мовою Java. Тернопіль: Навчальна книга – Бщгдан, 2019 -696 с.
6. Кунгурцев О.Б. Основи програмування на мові Java. Середовище Net Beans./О.Б. Кунгурцев – Одеса: ВМВ, 2006. – 182 с.
7. Р. Лафоре Объектно-ориентированное программирование в С++. Питер, 2011 - 923 с.
Методична література
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. Шилдт, Герберт. Java : методика программирования/ Герберт Шилдт. М.; СПб.; К.: Вильямс, 2008. - 511с.
5. Лафоре, Роберт. Структуры даннях и алгоритмы Java/ Роберт Лафоре; пер. С англ.. – 2-е изд. – СПб. : Питер, 2011. – 704 с.