Обзор проекта и UML-проектирование
Часть раздела Объектно-ориентированное программирование путешествия по Java на Coddy. Урок 77 из 87.
Задание
ЛегкоНачнём проект Library Management System с создания основы: основных классов сущностей, от которых будет зависеть всё остальное. В этом первом задании основное внимание уделяется созданию хорошо структурированных классов Book и User, которые моделируют основные сущности системы.
Ты разместишь свой код в трёх файлах:
Book.java: Создай классBook, представляющий книгу библиотеки. Каждая книга должна иметь Private fields дляisbn(String),title(String),author(String) иisAvailable(boolean, по умолчанию имеющий значениеtrue). Добавь constructor, который accepts isbn, title и author. Предоставь соответствующие Getter methods для всех fields и Setter дляisAvailable. Добавь methodgetDetails(), который Returns отформатированную строку:[isbn] title by author.User.java: Создай классUser, представляющий участника библиотеки. Каждый пользователь должен иметь Private fields дляid(String) иname(String). Добавь constructor, который accepts оба значения, и предоставь Getter methods для каждого field. Добавь methodtoString(), который Returns:User[id]: name.Main.java: Объедини свои классы, чтобы продемонстрировать их корректную работу. Ты получишь пять входных значений: ISBN книги, title, author, а затем ID и имя пользователя.Создай
Bookс использованием первых трёх входных значений иUserс использованием последних двух. Выведи details книги с помощьюgetDetails(), затем выведи, доступна ли книга, в форматеAvailable: trueилиAvailable: false. Наконец, выведи пользователя с помощью егоtoString()method.
Ты получишь пять входных значений в следующем порядке: ISBN (String), title (String), author (String), ID пользователя (String) и имя пользователя (String).
Например, если ввести 978-0-13-468599-1, Effective Java, Joshua Bloch, U001 и Alice Smith, результатом будет:
[978-0-13-468599-1] Effective Java by Joshua Bloch
Available: true
User[U001]: Alice SmithЭти основные классы станут строительными блоками для всей Library Management System. В следующих уроках ты расширишь их, добавив функциональность заимствования, возможности поиска и многое другое!
Попробуйте сами
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Считать информацию о книге
String isbn = scanner.nextLine();
String title = scanner.nextLine();
String author = scanner.nextLine();
// Считать информацию о пользователе
String userId = scanner.nextLine();
String userName = scanner.nextLine();
// TODO: Создать объект Book с isbn, title и author
// TODO: Создать объект User с userId и userName
// TODO: Вывести детали книги с помощью getDetails()
// TODO: Print whether the book is available (format: "Available: true" or "Available: false")
// TODO: Вывести пользователя с помощью toString()
}
}
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово thisМетодыПоля (атрибуты)Метод-конструкторПерегрузка конструкторовИтоги — Простой калькулятор4Наследование
Основы наследования (extends)Ключевое слово superПереопределение методов (@Override)Цепочка конструкторовКласс ObjectОдиночное и многоуровневое наследованиеПочему нет множественного наследования классовИтоги — Иерархия сотрудников7Специальные методы и класс Object
Метод toString()equals() и hashCode()Метод clone()compareTo() и ComparableИнтерфейс ComparatorПовторение — Кастомная сортировка10Обработка исключений в ООП
Иерархия классов исключенийПользовательские исключенияПроверяемые и непроверяемые ошибкиПаттерн Try With ResourcesПовторение — Validated User13Проект: Управление библиотекой
Обзор проекта и UML-проектированиеКлассы Book и UserСистема выдачи книгФункционал поискаИнтерфейс администратораИнтеграция обработки исключенийТестирование и интеграция2Модификаторы доступа и инкапсуляция
Обзор уровней доступаМетоды геттеры и сеттерыСокрытие данныхКлючевое слово finalИтоги — Менеджер банковского счета5Полиморфизм
Основы перегрузки методовПереопределение методов (Run-Time)Upcasting и DowncastingОператор instanceofАбстрактные классы и методыИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция против наследованияАгрегация против композицииВнутренние, вложенные и анонимные классыEnums и методы перечисленийRecords (Java 16+)Sealed-классы (Java 17+)11Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн SingletonПаттерн FactoryПаттерн BuilderПаттерн ObserverПаттерн Strategy3Свойства класса и статические члены
Переменные экземпляра и статические переменныеСтатические методыСтатические блокиКонстанты (static final)Итоги: Счетчик и утилиты6Интерфейсы и абстрактные классы
Введение в интерфейсыРеализация интерфейсовРеализация нескольких интерфейсовDefault и Static методы в интерфейсахАбстрактные классы vs ИнтерфейсыФункциональные интерфейсыИтоги — Платежная система9Обобщения
Введение в обобщенияОбобщенные классыОбобщенные методыОграниченные параметры типаСимволы подстановки (Wildcards: ?, extends, super)Итоги — Обобщенный контейнер12Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»Паттерн «Итератор»Потренируйтесь самостоятельно: Онлайн-компилятор Java