Skip to content

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

Історія Без Міфів імені Т.Г. Шевченка

Мета

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

  2. Eclipse IDE for Java Developers - середовище розробки.

Вимоги

  1. Початковий код повинен відповідати Java Code Conventions.
  2. Коментарі використовувати для автоматичної генерації документації за допомогою Javadoc (вікі).
  3. Рішення всіх лабораторних робіт розміщувати у відповідних пакетах єдиного проекту Eclipse (див. приклад):
    • проект повинен мати назву 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: 9780132761680
    Написана просто, містить багато корисної інформації. Джеймс Гослінг - один з авторів Java. Рекомендується всім, хто починає знайомитися з мовою. Має сенс переглянути і більш досвідченим програмістам.

  2. Core Java Volume I - Fundamentals. Cay Horstmann
    ISBN: 9780135166307
    Розглядаються різні аспекти мови - від використання assert до регулярних виразів і NIO.

  3. Java Examples in a Nutshell. David Flanagan
    ISBN: 9780596006204
    Містить безліч закінчених реалізацій окремих фрагментів технологій - RMI-виклики, доступ до баз через JDBC і т.д. Приклади прості для розуміння, їх можна легко модифікувати.

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

  1. Core Java Volume II - Advanced Features. Cay Horstmann
    ISBN: 9780135166314
    Розглядаються більш серйозні теми - багатопоточне програмування, локалізація програми, питання безпеки, робота з XML.

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

  3. Effective Java. Joshua Bloch
    ISBN: 9780134685991
    У книзі 78 (у другому виданні) слабко пов'язаних одне з одним невеликих статей, що ілюструють тонкощі 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
    Про те, як не треба робити. У ній зібрані типові помилки розробників. Корисна для тих, хто має деякий досвід.

  4. Bitter Java. Bruce A. Tate
    ISBN: 9781930110434
    Зібрані помилки програмування з використанням Java Servlet, JSP, EJB і т.п.

Iнше

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