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

Обов'язкова дисципліна
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5.
Кількість аудиторних занять: 
15 лекцій, 15 лабораторних занять.
Самостійна робота: 
75 годин.
Семестровий контроль: 
Екзамен.
Освітню компоненту забезпечує: 
Анотація: 

Анотація навчальної дисципліни

Мета вивчення дисципліни:
Курс знайомить із передовими навичками програмування та зосереджується на основних концепціях об’єктно-орієнтованого програмування з використанням мови високого рівня Java. Курс зосереджений на розумінні та практичному засвоєнні об’єктно-орієнтованих концепцій, таких як класи, об’єкти, абстракція даних, методи, перевантаження методів, успадкування та поліморфізм. Також розглядаються практичні застосування об’єктно-орієнтованого програмування в області науки про дані, а також стеки, черги, списки та дерева.
Практичне значення та використання отриманих знань:
Вивчення принципів об’єктно-орієнтованого програмування мовою програмування вищого рівня Java. Отримання навичок аналізу предметної області для розробки ментальної моделі об’єктів, необхідних для створення архітектури програмного забезпечення. Отримання вміння використовувати об’єктно-орієнтоване програмування для формування архітектури програмного забезпечення, ретельно відокремлюючи проблеми та абстракції. Отримання навичок проектування та програмування програмного забезпечення для повторного використання коду.

Основні результати навчання:
ПРН1. Застосовувати знання основних форм і законів абстрактно-логічного мислення, основ методології наукового пізнання, форм і методів вилучення, аналізу, обробки та синтезу інформації в предметній області комп'ютерних наук. 
ПРН5. Проектувати, розробляти та аналізувати алгоритми розв’язання обчислювальних та логічних задач, оцінювати ефективність та складність алгоритмів на основі застосування формальних моделей алгоритмів та обчислюваних функцій.
ПРН9. Розробляти програмні моделі предметних середовищ, вибирати парадигму програмування з позицій зручності та якості застосування для реалізації методів та алгоритмів розв’язання задач в галузі комп’ютерних наук.

Тематика та види навчальних занять:
1 тиждень.
Лекція 1 «Введення в об'єктно-орієнтоване програмування. Історія та передумови виникнення об'єктно-орієнтованого підходу. Основні поняття та завдання об’єктно-орієнтованого підходу. Переваги та недоліки об’єктно-орієнтованого підходу. Основні поняття об'єктно-орієнтованого програмування».
Лабораторне заняття 1 «Базовий синтаксис Java».

2 тиждень.
Лекція 2 «Створення об'єктів. Примітивні та посилальні типи. Конструктор. Ключове слово this. Основи UML. Діаграма класів UML».
Лабораторне заняття 2 «Оголошення класу, поля та методи, конструктори. Позначення діаграми класів UML».

3 тиждень.
Лекція 3 «Основні принципи ООП. Поняття інкапсуляції. Інтерфейс і реалізація. Інкапсуляція в Java. Гетери та сетери. Інкапсуляція в дизайні класу».
Лабораторне заняття 3 «Модифікатори доступу, гетери та сетери, створення класів з урахуванням інкапсуляції».

4 тиждень.
Лекція 4 «Повторне використання коду. Композиція і успадкування. Клас Object. Порівняння композиції і успадкування».
Лабораторне заняття 4 «Успадкування та композиція в Java. Ланцюг викликів конструкторів. Ключове слово super. Успадкування та композиція в діаграмі класів UML».

5 тиждень.
Лекція 5 «Поліморфізм та його види. Статичне і динамічне зв’язування. Перевантаження методу. Перевизначення методу».
Лабораторне заняття 5 «Перевантаження та перевизначення методів в Java. Практичне призначення поліморфізму».

6 тиждень.
Лекція 6 «Принцип абстракції. Додаткові принципи ООП. Абстрактні класи та інтерфейси».
Лабораторне заняття 6 «Абстрактні класи в Java. Інтерфейси в Java (до та після Java 1.8). Абстрактні класи та інтерфейси: випадки використання».

7 тиждень.
Лекція 7 «Анонімні об'єкти, класи та методи. Лямбда-вирази та функціональні інтерфейси».
Лабораторне заняття 7 «Синтаксис анонімних об’єктів і класів, випадки використання. Синтаксис та випадки використання лямбда-виразів».

8 тиждень.
Лекція 8 «Узагальнене програмування. Автопакування та авторозпакування типів. Узагальнений клас, інтерфейс, метод, конструктор. Стирання типів».
Лабораторне заняття 8 «Синтаксис узагальненого програмування в Java. Автопакування та авторозпакування в Java. Стирання типів в Java».
Модульна контрольна робота 1.

9 тиждень.
Лекція 9 «Колекції. Списки та черги. Класи Collections та Arrays».
Лабораторне заняття 9 «Колекції та масиви: випадки використання та різниця. Створення екземплярів колекції. Практикум зі списками та чергами».

10 тиждень.
Лекція 10 «Колекції. Множини та Словники. Деякі корисні методи колекцій. Шаблон ‘Ітератор’».
Лабораторне заняття 10 «Практикум з множинами та словниками. Сценарії використання шаблону ‘Ітератор’».

11 тиждень.
Лекція 11 «Потоки в Java. Взаємодія між потоками. Створення та управління потоками».
Лабораторне заняття 11 «Практикум з обробки даних за допомогою потоків даних».

12 тиждень.
Лекція 12 «Налагодження та обробка помилок. Механізм винятків у Java. Перевірені проти неперевірених винятків».
Лабораторне заняття 12 «Винятки в Java: процедура try-catch-finally. Механізм try-with-resources».

13 тиждень.
Лекція 13 «Статичні поля, методи та класи. Перерахування та аргументи змінної довжини».
Лабораторне заняття 13 «Випадки використання статичних полів, методів і класів. Перерахування та константи: різниця та приклади використання».

14 тиждень.
Лекція 14 «Введення та виведення в Java. Java I/O, NIO та NIO.2. Серіалізація та десеріалізація».
Лабораторне заняття 14 «Практикум з потоків, та роботою з файлами та каталогами. Серіалізація та десеріалізація в Java».

15 тиждень.
Лекція 15 «Як працює Java. JRE і JVM. Завантажувачі класу. Збір сміття. Типи посилань в Java».
Лабораторне заняття 15 «Практикум з тем попередніх лабораторних робіт».
Модульна контрольна робота 2.

Самостійна робота здобувача відбувається впродовж семестру та складається з підготовки до аудиторних занять, контрольних заходів, індивідуальних завдань.
Консультації: здійснюються викладачем впродовж семестру згідно розкладу.

Оцінювання результатів навчання:

Оцінювання результатів навчання з дисципліни здійснюється за накопичувальною системою, яка дає можливість здобувачеві протягом семестру отримати максимально 100 балів.

Модуль 1
Виконання лабораторних робіт – по 3 бали за кожну лабораторну роботу (всього 24 бали).
Модульна контрольна робота 1 – бездоганне виконання 26 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання кожного завдання).
Модуль 2
Виконання лабораторної роботи – по 4 бали за кожну лабораторну роботу (всього 28 балів).
Модульна контрольна робота 2 – бездоганне виконання 22 бали (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання кожного завдання).

Посилання на рекомендовані джерела:
1. Онлайн-курс JavaRush. URL: https://javarush.com/ua/ (дата звернення 01.08.2022).
2. W3Schools – Java OOP. URL: https://www.w3schools.com/java/java_oop.asp(дата звернення 01.08.2022).
3. Oracle – The Java Tutorials. URL: https://docs.oracle.com/javase/tutorial/ (дата звернення 01.08.2022).
4. JavaTPoint – Java Tutorial. URL: https://www.javatpoint.com/java-tutorial (дата звернення 01.08.2022).
5. GeeksForGeeks – Java Programming Language. URL: https://www.geeksforgeeks.org/java/ (дата звернення 01.08.2022).
 

2022 рік