Class AnticafeService

java.lang.Object
com.anticafe.service.AnticafeService

public class AnticafeService extends Object
Сервис управления антикафе. Обеспечивает основные операции: занятие и освобождение столиков, расчет стоимости посещения, управление ценами.
  • Constructor Summary

    Constructors
    Constructor
    Description
    AnticafeService(double pricePerMinute)
    Создает сервис антикафе с указанной ценой за минуту.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    calculateCost(long minutes)
    Вычисляет стоимость посещения за указанное количество минут.
    double
    Возвращает текущую стоимость одной минуты пребывания.
    getTable(int tableNumber)
    Возвращает объект столика по его номеру.
    Возвращает список всех столиков антикафе.
    int
    Возвращает общее количество столиков в антикафе.
    Возвращает историю всех завершенных посещений.
    boolean
    occupyTable(int tableNumber)
    Занимает указанный столик для гостей.
    double
    releaseTable(int tableNumber)
    Освобождает указанный столик и создает запись о посещении в истории.
    void
    setPricePerMinute(double pricePerMinute)
    Устанавливает новую стоимость за минуту пребывания.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AnticafeService

      public AnticafeService(double pricePerMinute)
      Создает сервис антикафе с указанной ценой за минуту. Инициализирует все столики в свободном состоянии.
      Parameters:
      pricePerMinute - стоимость одной минуты пребывания в антикафе
  • Method Details

    • getTables

      public List<Table> getTables()
      Возвращает список всех столиков антикафе.
      Returns:
      неизменяемый список столиков
    • getVisitHistory

      public List<VisitRecord> 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

      public Table getTable(int tableNumber)
      Возвращает объект столика по его номеру.
      Parameters:
      tableNumber - номер столика (от 1 до 10)
      Returns:
      объект столика
      Throws:
      IllegalArgumentException - если номер столика выходит за допустимые пределы
    • getTotalTables

      public int getTotalTables()
      Возвращает общее количество столиков в антикафе.
      Returns:
      количество столиков (всегда 10)