Об'єктно-орієнтоване програмування∗
Історія Без Міфів імені Т.Г. Шевченка
Мета∗
- Оволодіти основами мови програмування Java
- Отримати навички розробки програм з використанням принципів ООП
- Ознайомитись з платформою Java SE
Програмні засоби та інструменти
-
OpenJDK або Java SE Development Kit - комплект розробника застосунків мовою Java.
-
Eclipse IDE for Java Developers - середовище розробки.
Вимоги∗
- Початковий код повинен відповідати Java Code Conventions.
- Коментарі використовувати для автоматичної генерації документації за допомогою Javadoc (вікі).
- Рішення всіх лабораторних робіт розміщувати у відповідних пакетах єдиного проекту 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 ВАРІАНТИ ВИКОРИСТАННЯ | Опис поведінки програми: "хто" і "що" може зробити. Відповідає функціональним вимогам. Ілюструється за допомогою копій екрану з описом. |
ВИСНОВКИ | Заключення стосовно повноти досягнення мети. |
Лабораторні роботи∗
Спільні завдання∗
-
Розробити програму для рішення індивідуального завдання.
-
Виконати рефакторинг відповідно до загальних вимог.
-
Виправити програму з урахуванням отриманих зауважень.
Індивідуальні завдання∗
-
Структура програми мовою 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: 9780132761680
Написана просто, містить багато корисної інформації. Джеймс Гослінг - один з авторів Java. Рекомендується всім, хто починає знайомитися з мовою. Має сенс переглянути і більш досвідченим програмістам. -
Core Java Volume I - Fundamentals. Cay Horstmann
ISBN: 9780135166307
Розглядаються різні аспекти мови - від використання assert до регулярних виразів і NIO. -
Java Examples in a Nutshell. David Flanagan
ISBN: 9780596006204
Містить безліч закінчених реалізацій окремих фрагментів технологій - RMI-виклики, доступ до баз через JDBC і т.д. Приклади прості для розуміння, їх можна легко модифікувати.
Для досвідчених∗
-
Core Java Volume II - Advanced Features. Cay Horstmann
ISBN: 9780135166314
Розглядаються більш серйозні теми - багатопоточне програмування, локалізація програми, питання безпеки, робота з XML. -
Thinking in Java. Bruce Eckel
ISBN: 9780131872486
Треба прочитати кожному розробнику. Про філософію мови, про її устрій, її підхід до опису світу і вирішення задач. Дуже глибока і корисна для розуміння, що таке Java. Новачкам буде марна. -
Effective Java. Joshua Bloch
ISBN: 9780134685991
У книзі 78 (у другому виданні) слабко пов'язаних одне з одним невеликих статей, що ілюструють тонкощі 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
Про те, як не треба робити. У ній зібрані типові помилки розробників. Корисна для тих, хто має деякий досвід. -
Bitter Java. Bruce A. Tate
ISBN: 9781930110434
Зібрані помилки програмування з використанням Java Servlet, JSP, EJB і т.п.