Skip to content

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

Мета∗

  • Оволодіти основами мови програмування Java
  • Отримати навички розробки програм з використанням принципів ООП
  • Ознайомитись з платформою Java SE
Програмні засоби та інструменти

Вимоги∗

  1. Початковий код повинен відповідати Java Code Conventions.

  2. Коментарі використовувати для автоматичної генерації документації за допомогою Javadoc (вікі).

  3. Рішення всіх лабораторних робіт розміщувати у відповідних пакетах єдиного проекту (див. приклад):

    • проект повинен мати назву surname-name - прізвище та им'я розробника латинкою в нижньому регістрі;
    • пакети, що містять всі розроблені класи та підпакети для кожного рішення, повинні мати назву ua.khpi.oop.surnameXX, де XX - номер роботи.
Рекомендації

Звіт∗

Не потрібен за наявності javadoc-коментарів, що відповідають завданню.

Приклад документуючих коментарів
/**
 * The Foo class is a silly example to illustrate documentation comments.
 */
public class Foo {

    /**
     * An integer to keep track of for fun.
     */
    private int count;
    ...

    /**
     * Initialize a newly created object.
     */
    public Foo() {
        ...
    }

    /**
     * Increment a value by delta and return the new value.
     *
     * @param delta the amount the value should be incremented by
     * @return the post-incremented value
     */
    public int increment(int delta) {
        ...
    }
    ...
}
Структура звіту

Надається у вигляді файлів doc/surnameXX/readme.md (XX - номер роботи) в Markdown-форматі українською мовою.

Обов'язковий розділ Зауваження
Номер і тема роботи Вказується з вирівнюванням по центру рядка.
Мета: ... Відповідає темі та завданню.
1 ВИМОГИ Повне формулювання завдання.
1.1 Розробник Інформація про розробника:
- прізвище, ім'я, по батькові;
- назва академічної групи;
- номер варіанту.
1.2 Загальне завдання Вимоги, обмеження та зауваження.
1.3 Задача Прикладна задача відповідно до варіанта.
2 ОПИС ПРОГРАМИ Особливості рішення, структура програми, схеми та ілюстрації.
2.1 Засоби ООП Обґрунтування застосовуваних об'єктно-орієнтованих методів.
2.2 Ієрархія та структура класів Опис розроблених класів.
2.3 Важливі фрагменти програми Частини тексту програми, що демонструють рішення задачі.
3 ВАРІАНТИ ВИКОРИСТАННЯ Опис поведінки програми: "хто" і "що" може зробити.
Відповідає функціональним вимогам.
Ілюструється за допомогою копій екрану з описом.
ВИСНОВКИ Заключення стосовно повноти досягнення мети.

Лабораторні роботи∗

Спільні завдання∗

  1. Розробити програму для рішення індивідуального завдання.

  2. Виконати рефакторинг відповідно до загальних вимог.

  3. Виправити програму з урахуванням отриманих зауважень.

Індивідуальні завдання∗

  1. Структура програми мовою Java. Типи даних, літерали, операції і оператори

  2. Алгоритмічна декомпозиція. Прості алгоритми обробки даних

  3. Утилітарні класи. Обробка масивів і рядків

  4. Інтерактивні консольні програми для платформи Java SE

  5. Розробка власних контейнерів. Ітератори

  6. Серіалізація/десеріалізація об'єктів. Бібліотека класів користувача

  7. Об'єктно-орієнтована декомпозиція

  8. Основи введення/виведення Java SE

  9. Параметризація в Java

  10. Обробка параметризованих контейнерів

  11. Регулярні вирази. Перевірка даних

  12. Регулярні вирази. Обробка тексту

  13. Паралельне виконання. Multithreading

  14. Multithreading. Ефективність використання

  15. Колекції в Java

  16. Модульне тестування

Заочна форма навчання∗

Тема∗

Розробка об'єктно-орієнтованих програм мовою Java для вирішення прикладних задач.

Мета∗

Придбання навичок застосування об'єктно-орієнтованої декомпозиції при вирішенні прикладних задач мовою Java.

Завдання∗

  1. Розробити програму рішення:

  2. Оформити звіт, що містить опис розробленої програми та результат її тестування.

  3. Звіт повинен відповідати загальним вимогам.

Приклади∗

Початковий код demo-проекту.

Структура
demo
    ├── doc
    │   ├── demo01
    │   │   └── readme.md
    │   ├── demo02
    │   │   └── readme.md
    │   └── demo03
    │       └── readme.md
    └── src
        └── ua
            └── khpi
                └── oop
                    ├── demo01
                    │   ├── Main.java
                    │   └── package-info.java
                    ├── demo02
                    │   ├── Main.java
                    │   └── package-info.java
                    └── demo03
                        ├── Main.java
                        └── package-info.java
Пакети
№ Пакет Опис
1 ua.khpi.oop.demo01 Демонстрація структури проекту рішення завдання лабораторної роботи №1
2 ua.khpi.oop.demo02 Демонстрація структури проекту рішення завдання лабораторної роботи №2
3 ua.khpi.oop.demo03 Демонстрація визначення часу обробки даних

Презентації∗

№ Призначення Зміст
1 Лекція №1 Overview. Program Structure
2 Лекція №2 Data Types. Arrays
3 Лекція №3 Operators. Control Flow Statements
4 Лекція №4 OOP Concepts

Література∗

Для новачків∗

  1. The Java Programming Language. Ken Arnold, James Gosling, David Holmes. ISBN: 9780321349804. Класична книга, написана одним із творців Java. Чудовий старт для тих, хто тільки починає вивчати Java.

  2. Core Java, Volume I: Fundamentals. Cay Horstmann. ISBN: 9780135328378. Один із найкращих ресурсів для освоєння Java. Цей перший із двох томів пропонує детальний розгляд фундаментальних тем, включаючи ООП, рефлексію, інтерфейси, внутрішні класи, обробку винятків, дженерики, колекції, лямбда-вирази, паралелізм тощо.

  3. Head First Java: A Brain-Friendly Guide. Kathy Sierra, Bert Bates, Trisha Gee. ISBN: 9781491910771. Веселий і інтерактивний підхід до вивчення Java. Для новачків, які хочуть швидко зрозуміти основи.

  4. Java: A Beginner's Guide. Herbert Schildt, Danny Coward. ISBN: 9781265054632. Простий і зрозумілий посібник для початківців, який охоплює всі основні концепції Java, включаючи нові функції версій Java 21+.

Для досвідчених∗

  1. Core Java, Volume II: Advanced Features. Cay Horstmann. ISBN: 9780135371749. Поглиблений аналіз корпоративного програмування, мереж, баз даних, безпеки, локалізації та роботи з XML.

  2. Thinking in Java. Bruce Eckel. ISBN: 9780131872486. Необхідно прочитати кожному розробнику. Допомагає зрозуміти філософію Java, її архітектуру та підходи до вирішення завдань. Дуже глибока та корисна для розуміння, що таке Java.

  3. Effective Java. Joshua Bloch. ISBN: 9780134685991. Кожен розділ складається з кількох слабко пов'язаних одне з одним невеликих статей, що ілюструють тонкощі Java. Написана практиком з чималим досвідом. Абсолютно необхідна для розробників із досвідом. Містить практичні поради щодо написання ефективного і безпечного коду.

  4. Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. ISBN: 9780321349606. Найкращий ресурс для вивчення багатопоточності в Java.

  5. Modern Java in Action: Lambdas, Streams, Functional and Reactive Programming. Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft. ISBN: 9781617293566. Охоплює сучасні підходи до програмування в Java, такі як лямбда-вирази, потоки і реактивне програмування.

Про розробку в цілому∗

  1. Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. ISBN: 9780201633610, 9780201634983. Класика про шаблони проектування. Читати тільки в оригіналі! Перекладачі доклали всіх зусиль, щоб зіпсувати все до неможливості.

  2. Applied Java Patterns. Stephen Stelting, Olav Maassen. ISBN: 9780130935380. Присвячена шаблонами проектування - прийомам організації програм, які на практиці довели свою ефективність. Корисна, при проектуванні архітектури програм.

  3. Bug Patterns In Java. Eric Allen. ISBN: 9781590590614. Про те, як не треба робити. Типові помилки розробників Java. Дуже корисна для тих, хто хоче уникнути поширених проблем.

  4. Refactoring: Improving the Design of Existing Code. Martin Fowler. ISBN: 9780134757599. Вчить, як покращувати існуючий код, роблячи його більш читабельним та підтримуваним.

  5. Clean Code: A Handbook of Agile Software Craftsmanship. Robert C. Martin. ISBN: 9780132350884. Найкраща книга для розуміння принципів написання чистого і якісного коду.

Iнше∗

  1. GRASP, SOLID.
  2. Рефакторинг, патерни проектування, принципи SOLID.
  3. Design patterns, anti-patterns, refactoring.