Научиться реализовывать бизнес-логику в рамках заданной архитектуры. Все классы и методы уже созданы — необходимо только реализовать логику в теле методов. Создавать свои классы и методы запрещено.
- Hotel — представляет отель с именем и списком комнат.
- Room — описывает номер (номер комнаты, тип, цена за ночь, доступность).
- Guest — информация о госте (имя и email).
- BookingService — содержит бизнес-логику бронирования.
- PaymentService — отвечает за расчеты: налоги и скидки.
-
isRoomAvailable(Room room, LocalDate checkIn, LocalDate checkOut)
Проверить доступность номера. Сейчас заглушка. Реализовать реальную проверку (например, по флагуisAvailable). -
bookRoom(Hotel hotel, Room room, Guest guest, LocalDate checkIn, LocalDate checkOut)
Если номер доступен — выполнить бронирование (установитьisAvailable = false). Вернутьtrueесли бронирование успешно, иначеfalse. -
calculatePrice(Room room, LocalDate checkIn, LocalDate checkOut)
Вычислить полную стоимость: цена за ночь * количество ночей.
-
applyTax(double amount)
Применить налог к сумме. Например, 10%. -
applyDiscount(double amount, double discountRate)
Применить скидку в процентах (отнятьdiscountRate%от суммы).
- Нельзя добавлять свои классы и методы.
- Можно использовать любые стандартные классы Java (включая
LocalDate,ChronoUnit,Listи т.д.). - Следует придерживаться ООП и чистой архитектуры.
- Обработка ошибок и форматирование приветствуются.
- Цель — научиться реализовывать логику в рамках готовой структуры, не нарушая ее.
- (*) Реализовать хранение истории бронирований.
- (*) Добавить проверку, что бронируемые даты не пересекаются с уже занятыми.