Class AnticafeService
java.lang.Object
com.anticafe.service.AnticafeService
Сервис управления антикафе.
Обеспечивает основные операции: занятие и освобождение столиков,
расчет стоимости посещения, управление ценами.
-
Constructor Summary
ConstructorsConstructorDescriptionAnticafeService(double pricePerMinute) Создает сервис антикафе с указанной ценой за минуту. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateCost(long minutes) Вычисляет стоимость посещения за указанное количество минут.doubleВозвращает текущую стоимость одной минуты пребывания.getTable(int tableNumber) Возвращает объект столика по его номеру.Возвращает список всех столиков антикафе.intВозвращает общее количество столиков в антикафе.Возвращает историю всех завершенных посещений.booleanoccupyTable(int tableNumber) Занимает указанный столик для гостей.doublereleaseTable(int tableNumber) Освобождает указанный столик и создает запись о посещении в истории.voidsetPricePerMinute(double pricePerMinute) Устанавливает новую стоимость за минуту пребывания.
-
Constructor Details
-
AnticafeService
public AnticafeService(double pricePerMinute) Создает сервис антикафе с указанной ценой за минуту. Инициализирует все столики в свободном состоянии.- Parameters:
pricePerMinute- стоимость одной минуты пребывания в антикафе
-
-
Method Details
-
getTables
-
getVisitHistory
Возвращает историю всех завершенных посещений. История содержит записи о всех освобожденных столиках с момента запуска.- Returns:
- список записей посещений
-
getPricePerMinute
public double getPricePerMinute()Возвращает текущую стоимость одной минуты пребывания.- Returns:
- стоимость за минуту в рублях
-
setPricePerMinute
public void setPricePerMinute(double pricePerMinute) Устанавливает новую стоимость за минуту пребывания. Цена не может быть отрицательной.- Parameters:
pricePerMinute- новая стоимость за минуту в рублях- Throws:
IllegalArgumentException- если цена отрицательная
-
occupyTable
public boolean occupyTable(int tableNumber) Занимает указанный столик для гостей. Устанавливает текущее время как время начала посещения. Если столик уже занят, операция не выполняется.- Parameters:
tableNumber- номер столика (должен быть от 1 до 10)- Returns:
- true если столик успешно занят, false если столик уже был занят
- Throws:
IllegalArgumentException- если номер столика выходит за допустимые пределы
-
releaseTable
public double releaseTable(int tableNumber) Освобождает указанный столик и создает запись о посещении в истории. Вычисляет продолжительность посещения и итоговую стоимость. Минимальная длительность посещения - 1 минута.- Parameters:
tableNumber- номер столика для освобождения (от 1 до 10)- Returns:
- стоимость посещения в рублях, или -1 если столик уже был свободен
- Throws:
IllegalArgumentException- если номер столика выходит за допустимые пределы
-
calculateCost
public double calculateCost(long minutes) Вычисляет стоимость посещения за указанное количество минут.- Parameters:
minutes- количество минут пребывания- Returns:
- стоимость в рублях (минуты умножить на цену за минуту)
-
getTable
Возвращает объект столика по его номеру.- Parameters:
tableNumber- номер столика (от 1 до 10)- Returns:
- объект столика
- Throws:
IllegalArgumentException- если номер столика выходит за допустимые пределы
-
getTotalTables
public int getTotalTables()Возвращает общее количество столиков в антикафе.- Returns:
- количество столиков (всегда 10)
-