Об'єктно-орієнтоване програмування∗
Мета∗
- Оволодіти основами мови програмування Java
- Отримати навички розробки програм з використанням принципів ООП
- Ознайомитись з платформою Java SE
Програмні засоби та інструменти
- OpenJDK або Java SE Development Kit - комплект розробника застосунків мовою Java (SDK).
- IntelliJ IDEA Community Edition, Visual Studio Code, або Eclipse IDE for Java Developers - інтегроване середовище розробки (IDE).
Вимоги∗
-
Початковий код повинен відповідати Java Code Conventions.
-
Коментарі використовувати для автоматичної генерації документації за допомогою Javadoc (вікі).
-
Рішення всіх лабораторних робіт розміщувати у відповідних пакетах єдиного проекту (див. приклад):
- проект повинен мати назву
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 ВАРІАНТИ ВИКОРИСТАННЯ | Опис поведінки програми: "хто" і "що" може зробити. Відповідає функціональним вимогам. Ілюструється за допомогою копій екрану з описом. |
| ВИСНОВКИ | Заключення стосовно повноти досягнення мети. |
Лабораторні роботи∗
Спільні завдання∗
-
Розробити програму для рішення індивідуального завдання.
-
Виконати рефакторинг відповідно до загальних вимог.
-
Виправити програму з урахуванням отриманих зауважень.
Індивідуальні завдання∗
-
Структура програми мовою Java. Типи даних, літерали, операції і оператори
-
Серіалізація/десеріалізація об'єктів. Бібліотека класів користувача
Заочна форма навчання∗
Тема∗
Розробка об'єктно-орієнтованих програм мовою Java для вирішення прикладних задач.
Мета∗
Придбання навичок застосування об'єктно-орієнтованої декомпозиції при вирішенні прикладних задач мовою Java.
Завдання∗
-
Розробити програму рішення:
- лабораторної роботи №9 (перший семестр).
- лабораторної роботи №16 (другий семестр).
-
Оформити звіт, що містить опис розробленої програми та результат її тестування.
-
Звіт повинен відповідати загальним вимогам.
Приклади∗
Початковий код 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 |
Література∗
Для новачків∗
-
The Java Programming Language. Ken Arnold, James Gosling, David Holmes. ISBN: 9780321349804. Класична книга, написана одним із творців Java. Чудовий старт для тих, хто тільки починає вивчати Java.
-
Core Java, Volume I: Fundamentals. Cay Horstmann. ISBN: 9780135328378. Один із найкращих ресурсів для освоєння Java. Цей перший із двох томів пропонує детальний розгляд фундаментальних тем, включаючи ООП, рефлексію, інтерфейси, внутрішні класи, обробку винятків, дженерики, колекції, лямбда-вирази, паралелізм тощо.
-
Head First Java: A Brain-Friendly Guide. Kathy Sierra, Bert Bates, Trisha Gee. ISBN: 9781491910771. Веселий і інтерактивний підхід до вивчення Java. Для новачків, які хочуть швидко зрозуміти основи.
-
Java: A Beginner's Guide. Herbert Schildt, Danny Coward. ISBN: 9781265054632. Простий і зрозумілий посібник для початківців, який охоплює всі основні концепції Java, включаючи нові функції версій Java 21+.
Для досвідчених∗
-
Core Java, Volume II: Advanced Features. Cay Horstmann. ISBN: 9780135371749. Поглиблений аналіз корпоративного програмування, мереж, баз даних, безпеки, локалізації та роботи з XML.
-
Thinking in Java. Bruce Eckel. ISBN: 9780131872486. Необхідно прочитати кожному розробнику. Допомагає зрозуміти філософію Java, її архітектуру та підходи до вирішення завдань. Дуже глибока та корисна для розуміння, що таке Java.
-
Effective Java. Joshua Bloch. ISBN: 9780134685991. Кожен розділ складається з кількох слабко пов'язаних одне з одним невеликих статей, що ілюструють тонкощі Java. Написана практиком з чималим досвідом. Абсолютно необхідна для розробників із досвідом. Містить практичні поради щодо написання ефективного і безпечного коду.
-
Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea. ISBN: 9780321349606. Найкращий ресурс для вивчення багатопоточності в Java.
-
Modern Java in Action: Lambdas, Streams, Functional and Reactive Programming. Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft. ISBN: 9781617293566. Охоплює сучасні підходи до програмування в Java, такі як лямбда-вирази, потоки і реактивне програмування.
Про розробку в цілому∗
-
Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. ISBN: 9780201633610, 9780201634983. Класика про шаблони проектування. Читати тільки в оригіналі! Перекладачі доклали всіх зусиль, щоб зіпсувати все до неможливості.
-
Applied Java Patterns. Stephen Stelting, Olav Maassen. ISBN: 9780130935380. Присвячена шаблонами проектування - прийомам організації програм, які на практиці довели свою ефективність. Корисна, при проектуванні архітектури програм.
-
Bug Patterns In Java. Eric Allen. ISBN: 9781590590614. Про те, як не треба робити. Типові помилки розробників Java. Дуже корисна для тих, хто хоче уникнути поширених проблем.
-
Refactoring: Improving the Design of Existing Code. Martin Fowler. ISBN: 9780134757599. Вчить, як покращувати існуючий код, роблячи його більш читабельним та підтримуваним.
-
Clean Code: A Handbook of Agile Software Craftsmanship. Robert C. Martin. ISBN: 9780132350884. Найкраща книга для розуміння принципів написання чистого і якісного коду.