Об'єктно-орієнтоване програмування на Java
Мета вивчення дисципліни - формування комплексу знань і вмінь для застосовування методів об’єктно-орієнтованого аналізу та моделювання для розробки програмного забезпечення. Оволодіння практикою сучасного програмування в рамках парадигм об’єктно-орієнтованого підходу до створення програмних продуктів.
Задачі вивчення дисципліни:
• розвити уміння аналізувати предметну область
• розвити здібності до абстрагування для виділення об’єктів та класів,
• оволодіти стилем та прийомами об’єктно-орієнтованого програмування мовою Java,
• оволодіти основами тестування та налагодження програм мовою Java.
У процесі вивчення курсу зосереджується увага на засвоєнні знань з таких питань: вимоги до ОО-стилю програмування, принципи інкапсуляції, методи побудови ієрархії класів, методи реалізації поліморфізму, застосування інтерфейсів, технології застосування бібліотек класів, методи візуального програмування.
Дисципліна є обов’язковою.
Дисципліна базується на знаннях, отриманих при вивченні дисциплін:
• Організація даних в обчислювальних системах,
• Комп’ютерна дискретна математика
• Основи програмування,
• Іноземна мова.
• Об’єктно-орієнтоване програмування. С++.
Лекційні заняття
Змістовий модуль 1. Особливості і основні конструкції мови Java
Лекція 1. Особливості та призначення мови Java. [1, с. 8 – 26, 58-79], [3, с. 4 – 12, 33 – 38,56 – 58]
1.1) Віртуальна Java-машина.
1.2) Байт-код.
1.3) JIT-компіляція Інкапсуляція.
1.4) Найпростіші конструкції мови.
1.5) Рядки (клас String).
Лекція 2. Основні конструкції мови. [1, с. 80-88, 58-79], [53, с. 9 – 68,163-168]
2.1) Математичні функції.
2.2) Робота з массивами.
2.3) Особливості використання оперaтора break і continue.
2.4) Особливості використання оперaтора break і continue.
Змістовий модуль 2. Класи та об’єкти
Лекція 3. Класи та об’єкти. [1, с. 92-114], [3, с. 14 – 27, 39 - 52]
3.1) Створення класу.
3.2) Конструктори.
3.3) Доступ до членів класу.
3.4) Ключове слово this.
Змістовий модуль 3. Статичні члени класу
Лекція 4. Статичні дані. Константи. [1, с. 115-122], [3,с. 71 – 91]
4.1) Статичні дані та методи.
4.2) Модифікатор final.
4.3) Константи.
Змістовий модуль 4. Відношення між класами.
Лекція 5. Відношення між классами –загальні положення. Успадкування. [1, с. 211-238, 308-314], [3, с. 93 – 103, 105 – 112]
5.1) Типи відношень.
5.2) Успадкування.
5.3) Доступ до елементів класу.
5.4) Конструктори базового і похідного класів.
Лекція 6. Поліморфізм. [3, с. 113 – 133]
6.1) Сумісність об'єктів при спадкуванні.
6.2) еревантаження методів.
6.3) Динамічне зв'язування.
6.4) Використання ключового слова final для запобігання спадкування.
Змістовий модуль 5. Інтерфейси.
Лекція 7. Інтерфейси. [1, с. 261-292], [3, с. 137 – 160]
7.1) Опис і реалізація інтерфейсу.
7.2) Спадкування інтерфейсів.
7.3) Посилання на інтерфейс.
7.4) Абстрактні класи.
Змістовий модуль 6 Обробка виняткових ситуацій.
Лекція 8. Обробка виняткових ситуацій. [1, с. 423-455], [3, с. 171 – 183]
8.1) Класифікація виняткових ситуацій.
8.2) Принцип обробки виняткових ситуацій.
8.3) Оператори try і catch.
Лекція 9. Генерація виняткової ситуації
9.1) Створення власних класів виняткових ситуацій.
9.2) Оголошення виняткових ситуацій, які може згенерувати метод.
9.3) Оператор finally.
Змістовий модуль 7. Шаблони і колекції
Лекція 10. Узагальнення (шаблони). [1, с. 339-378], [3, с. 163 – 170]
10.1) Параметризовані типи..
10.2) Узагальнені класи.
10.3) Узагальнення і спадкування.
Лекція 11. Колекції. [3, с. 307 – 354]
11.1) Типи колекцій.
11.2) Інтерфейс Collection.
11.3) Класи колекцій: ArrayList, LinkedList, ArrayDeque, HashSet, TreeSet..
Змістовий модуль 8. Введення/виведення даних
Лекція 12. Потоки введення-виведення. [1, с. 668-693], [3, с.355 – 361]
12.1) Робота з файлами.
12.2) Форматоване введення та виведення.
12.3) Читання та запис текстових файлів.
12.4) Серіалізація.
Змістовий модуль 9. Графіка
Лекція 13. Графіка загальні положення. [3, с. 237 – 247]
13.1) Компонент і контейнер.
13.2) Клас Graphics.
13.3) Графічні примітиви.
13.4) Можливості Java 2D. Розробки Java 3 D.
Лекція 14. Обробка подій. [1, с. 535-573], [3, с. 251 – 272]
14.1) Події і слухачі.
14.2) Типи подій і слухачів.
14.3) Обробники подій.
14.4) Адаптери.
Змістовий модуль 10. Створення проекту
Лекція 15. Створення проекту. [1, с. 621-628]
15.1) Створення контейнера JFrame.
15.2) Управління компоновкою.
15.3) Розміщення панелі на фреймі і на іншій панелі.
15.4) Заповнення панелей компонентами.
15.5) Додавання методів обробки подій.
5.3) Доступ до елементів класу.
5.4) Конструктори базового і похідного класів.
Планування самостійної роботи
Самостійна робота є основним засобом опанування здобувачем теоретико-практичного матеріалу в час, вільний від обов'язкових навчальних занять.
Співвідношення обсягів аудиторних занять і самостійної роботи визначається навчальним планом підготовки з урахуванням специфіки та змісту дисципліни, її місця, значення і дидактичної мети в реалізації освітньої програми.
ЗАСОБИ ДІАГНОСТИКИ РЕЗУЛЬТАТІВ НАВЧАННЯ
Поточний контроль
Форми поточного контролю (контрольних заходів):
– модульні контрольні роботи;
– виконання завдань на практичних заняттях;
- виконання завдань лабораторних робіт.
В процесі поточного контролю оцінюється СРЗ над досліджуваним матеріалом: повнота виконання завдань, рівень засвоєння навчальних матеріалів та окремих розділів навчальної дисципліни, робота з додатковою літературою, вміння й навички індивідуальних і групових презентацій, оволодіння практичними навичками аналітичної, дослідницької роботи, технічних або економічних розрахунків тощо.
Семестровий модуль завершується модульною контрольною роботою (МКР). МКР є обов’язкової формою поточного контролю, які виконуються у відповідності до графіка освітнього процесу, затвердженого наказом ректора та може виконуватися у письмовій або комп’ютерній формі.
Індивідуальні завдання
В рамках вивчення дисципліни передбачено курсову роботу.
Метою курсової роботи є поглиблення та закріплення знань, одержаних при вивченні дисципліни «Об’єктно-орієнтоване програмування», та набуття практичних навичок у проектуванні та налагодженні програм, що застосовують класи та об’єкти.
Завдання курсової роботи:
- розвити уміння виявляти і формулювати вимоги до програмного забезпечення;
- оволодіти практикою застосування об’єктно-орієнтованого підходу до створення додатків;
- вміти застосовувати інструментальні засоби програмування;
- оволодіти практикою ефективного застосування конструкцій мови програмування;
- оволодіти практикою створення графічного інтерфейсу користувача;
- оволодіти практикою тестування програмного коду.
Основні результати навчання
Вміти вибирати вихідні дані для проектування.
Знати і застосовувати методи об’єктно-орієнтованого аналізу при розробки програмного забезпечення.
Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення: спадкування, поліморфізм, інтерфейси.
Знати і застосовувати методи розробки алгоритмів відповідно заданому функціоналу.
Вміти розробляти інтерфейси користувачів програмного забезпечення.
Застосовувати на практиці інструментальні програмні засоби створення і тестування програмного забезпечення.
Отримання навичок в оформленні програмної документації
Графік виконання курсової роботи
1 тиждень Уточнення завдання ([1], c.45-61; [2], с. 40-63; [3], c. 8-38).
2 тиждень Об’єктно-орієнтований аналіз, визначення об’єктів і класів. ([1], c.45-61).
3 тиждень Визначення даних і методів. Визначення інтерфейсів.
4 тиждень Проектування класів. Написання коду класів у середовищі програмування.
([2], c.122-147; [ [10]).
5 тиждень Застосування колекцій. ([1], c.62-85; [3], c. 82-105; [7], с.13-22).
6 тиждень Створення графічних елементів керування.
7 тиждень Створення засобів обробки подій.
([1], c.85-94; [3], c. 105-120).
8 тиждень Створення файлів даних ([1], c.153-158; [7], c. 13-22).
9 тиждень Розробка коду програмних класів ([1], c.139-158)..
10 – 12 тиждніень Перевірка функціонування програмного продукту.. ([8], с. 228-235).
13 тиждень Оформлення пояснювальної записки.
14 тиждень Захист курсового проекту.
Самостійна робота
Самостійна робота складає 30 годин виконання КР.
Процедура оцінювання
Система оцінювання рівня навчальних досягнень ґрунтується на принципах ЄКТС та є накопичувальною.
Для забезпечення оперативного контролю за успішністю та якістю рівня навчальних досягнень здобувачів вищої освіти робота над КР поділяється на два семестрові модулі.
Першій модуль оцінюється у максимально можливі 30 балів.
Здобувач отримує по 5 балів за бездоганне виконання кожного з наступних етапів:
• уточнення завдання, коригування документу «Бачення», побудова словника предметної області;
• створення моделі предметної області;
• опис варіантів використання, складання технічного завдання;
• визначення концептуальних класів, побудова моделі концептуальних класів;
• опис системних операцій;
• розробка діаграм взаємодії;
Другий модуль оцінюється у максимально можливі 30 балів.
Здобувач отримує по 5 балів за бездоганне виконання кожного з наступних етапів:
• складання специфікацій програмних класів, побудова діаграми програмних класів.
• розробка коду програмних класів;
• розробка інтерфейсу користувачів;
• розробка чек-листів для тестування;
• тестування методів класів. Розробка драйверів і заглушок;
• тестування окремих класів і програмного продукту.
Умови допуску до підсумкового контролю
До захисту курсової роботи (демонстрація розробленого програмного забезпечення та презентація використаних практик інженерії програмного забезпечення) допускаються здобувачі вищої освіти, які виконали всі види навчальних елементів навчальної дисципліни на не менш, ніж на 60%.
Критерії оцінювання підсумкового контролю
Підсумковим контролем з дисципліни є усний екзамен.
Підсумковий контроль з дисципліни складається з двох частин: теоретичної та практичної. Мінімальна кількість балів, що зараховується як позитивний результат, дорівнює 60 (за 100-бальною шкалою).
Бали розподіляються наступним чином: 40 балів – теоретична частина та 60 балів – практична.
Екзаменаційний білет містить 5 теоретичних питання рівної складності і практичну частину – задачу.
За бездоганну відповідь на кожне теоретичне питання здобувач отримує – 8 балів. При цьому відповідь вважається бездоганною, якщо здобувач повністю розкрив суть питання, послідовно і логічно його доповів, навів приклади.
Кожний етап завдання практичної частини іспиту вважається виконаним бездоганно, якщо при його розв’язанні коректно побудовано відповідний фрагмент програми відповідно до завдання.
Екзамен враховується не складеним, якщо здобувач отримав незадовільну оцінку.
Питання теоретичної частини може бути присвячено концепції об’єктно-орієнтованого програмування, принципам побудови програм, правилам застосування конструкцій мови Java для отримання ефективних результатів, технології роботи з інструментальними програмними засобами. Відповідь на питання повинна мати загальне формулювання (6 балів), приклад (2 бали).
Практична частина представлена задачею, рішення якої передбачає виконання 5 етапів. На першому етапі потрібно створити ієрархію з 3 класів відповідно заданої предметної області і визначення їх атрибутів і методів абстрактного класу. Другий етап передбачає уточнення методів другого і третього класів, уведення перевантажених методів. На третьому етапі потрібно перевантажити одну операцію введення в одну операцію виведення для роботи з об’єктами класів. П’ятий етап передбачає створення класу який буде представляти пакет, побудову об’єктів класів і виконання операцій з об’єктами для демонстрації виконання функціональних вимог.
Практична частина іспиту вважається виконаною бездоганно при наявності розв’язання задачі, при цьому коректно побудовано ієрархію класів, добре обрані і розподілені атрибути класів, методи класів реалізують потрібні алгоритми, створені об’єкти повністю реалізовані, об’єкти класів демонструють виконання всього заданого функціоналу. Крім цього усі значущі конструкції мають коментарі.
За виконання кожного етапу практичної частини бали можуть бути зняті:
15 балів – за повну відсутність виконання;
10 балів – рішення не отримане або не вірне, але при цьому хід розв’язання та усі використані засади обрані вірно;
5 балів – наведене правильне рішення, але при цьому є помилки у розв’язанні;
4 балів – наведене правильне рішення, але при цьому не повністю виконані обов’язкові пояснення;
3 балів – за неправильне тлумачення вхідних даних, що не порушило загалом правильного ходу розв’язання задачі;
2 балів – за допущену помилку, що не вплинула на відповідь та загальний хід розв’язання питання;
1 бал – за нераціональне розв’язання завдання при наявності докладних пояснень та вірного кінцевого результату.
Якщо здобувач відмовився відповідати, то він отримує незадовільну оцінку.
Екзамен вважається не складеним, якщо здобувач отримав менше 60%.
Критерії оцінювання модульних контрольних робіт
Модульна контрольна робота виконуються у письмовій формі. Максимальна оцінка за їх бездоганне виконання становить 25 балів за першу роботу (0,67 кредитів).
Модульна робота складається з теоретичної частини та практичної частини - задачі. Максимальна оцінка за правильне виконання теоретичної частини модульної роботи становить 5 балів, за виконання практичної частини – 20 балів.
Кількість запитань теоретичної частини – 5. Кожна правильна відповідь оцінюється в 1 бал.
Кількість етапів рішення задачі практичної частини – 5. Правильне розв’язання кожної задачі оцінюється в 4 бали. Задача вважається розв’язаною, якщо при її розв’язанні використані конструкції мови і правильно реалізовані алгоритми у методах.
За виконання кожного завдання практичної частини бали можуть бути зняті:
4 балів – за повну відсутність виконання завдання практичної частини;
3 бали – за некоректне застосування синтаксису мови Java;
2 бали – за допущені помилки в реалізації алгоритмів;
1 бал – за допущену помилку, що не вплинула на відповідь та загальний хід розв'язання задачі
Задача не зараховується, якщо повністю відсутнє її розв’язання.
Критерії оцінювання виконання накопичувальної частини дисципліни
Накопичувальна частина дисципліни складається з виконання 8-ми лабораторних робіт та 7-ми практичних завдань.
Критерії оцінювання виконання та захисту лабораторної роботи
Оцінювання лабораторної роботи виконується виходячи з наступних вимог:
- завдання до лабораторної роботи має бути повністю виконаним;
- протокол має містити повний опис виконаної роботи;
- здобувач повинен знати теоретичний матеріал, який пов’язаний з завданням до лабораторної роботи;
- здобувач повинен пояснити усі рішення, які він прийняв розв’язуючи задачу;
- здобувач повинен захистити лабораторну роботу у строк.
Перші дві вимоги обов’язкові. Виконання кожної з останніх трьох вимог оцінюється у 0,5 бала. За бездоганне виконання роботи, що представлена у строк, здобувач отримує 5,0 бали. Максимальний «внесок» лабораторних робіт у оцінку модульного контролю становить 30 балів.
Критерії оцінювання виконання практичних завдань
У процесі практичного заняття здобувачі індивідуально вирішують завдання. Якщо задача була вирішена правильно, у повному об’ємі, то здобувач отримує оцінку максимальний можливий бал, якщо відповідь не повна, здобувач отримує частину цих балів. Здобувач, який не з’явився на заняття без поважних причин, отримує оцінку 0. Наприкінці контрольного періоду для кожного здобувача підраховується сума балів, що він міг заробити (С1) та реально отримана сума балів (С2). Кількість балів, що зараховується у семестровий модуль розраховується за формулою 12*С1/С2.
Критерії оцінювання виконання КР
Виконання КР повинно включати пояснювальну записку, друкований і електронний варіант виконаної роботи. У пояснювальній записці здобувач описує постановку задачі. Показує теоретичні знаня з теми «Об’єктно-орієнтоване програмування. Java» стосовно до придбання практичних навичок розробки інноваційного ІТ стартапу, починаючи з формулювання бізнес ідеї та закінчуючи фандрейзингом. В електронному вигляді представляє реалізовану роботу.
Оцінювання роботи здійснюється з розрахунку 100 балів.
ПР05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПР12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
ПР14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
ПР13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
ПР04. Знати і застосовувати професійні стандарти і інші нормативно-правові документи в галузі інженерії програмного забезпечення.