Class StatisticsService

java.lang.Object
com.anticafe.service.StatisticsService

public class StatisticsService extends Object
Сервис статистики антикафе. Предоставляет методы для получения текущей и архивной статистики по работе заведения: занятость столиков, заработок, популярность.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Создает экземпляр сервиса статистики.
  • Method Summary

    Modifier and Type
    Method
    Description
    double
    Вычисляет среднее время занятости столика за всю историю посещений.
    double
    Вычисляет общую сумму, которую гости должны заплатить, если покинут антикафе прямо сейчас.
    int
    Определяет номер самого популярного столика.
    int
    Определяет номер столика, который принес наибольший доход.
    int
    Возвращает количество занятых столиков в данный момент.
    Формирует карту с суммарным доходом для каждого столика.
    double
    getTableTotalEarnings(int tableNumber)
    Возвращает общий доход, полученный с конкретного столика.
    int
    getTableVisitCount(int tableNumber)
    Возвращает количество посещений для конкретного столика.
    Формирует карту с количеством посещений для каждого столика.
    double
    Возвращает общий заработок антикафе за всё время работы приложения.

    Methods inherited from class java.lang.Object

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

    • StatisticsService

      public StatisticsService(AnticafeService anticafeService)
      Создает экземпляр сервиса статистики.
      Parameters:
      anticafeService - сервис антикафе, предоставляющий доступ к данным
  • Method Details

    • getOccupiedTablesCount

      public int getOccupiedTablesCount()
      Возвращает количество занятых столиков в данный момент. Подсчитывает столики, у которых установлен флаг занятости.
      Returns:
      количество занятых столиков (от 0 до 10)
    • getCurrentTotalCost

      public double getCurrentTotalCost()
      Вычисляет общую сумму, которую гости должны заплатить, если покинут антикафе прямо сейчас. Сумма рассчитывается для всех занятых столиков на основе текущего времени пребывания.
      Returns:
      общая текущая сумма к оплате в рублях
    • getTotalEarnings

      public double getTotalEarnings()
      Возвращает общий заработок антикафе за всё время работы приложения. Суммирует стоимость всех завершенных посещений из истории.
      Returns:
      общий заработок в рублях
    • getAverageOccupationTime

      public double getAverageOccupationTime()
      Вычисляет среднее время занятости столика за всю историю посещений. Рассчитывается как среднее арифметическое продолжительности всех визитов.
      Returns:
      среднее время в минутах или 0, если история посещений пуста
    • getMostPopularTable

      public int getMostPopularTable()
      Определяет номер самого популярного столика. Популярным считается столик, который выбирали наибольшее количество раз.
      Returns:
      номер самого популярного столика или -1, если история посещений пуста
    • getTableVisitCounts

      public Map<Integer,Integer> getTableVisitCounts()
      Формирует карту с количеством посещений для каждого столика. Ключ карты - номер столика, значение - количество посещений.
      Returns:
      карта (Map) со статистикой посещений по столикам
    • getMostProfitableTable

      public int getMostProfitableTable()
      Определяет номер столика, который принес наибольший доход. Суммирует стоимость всех посещений для каждого столика и выбирает максимальную.
      Returns:
      номер самого доходного столика или -1, если история посещений пуста
    • getTableEarnings

      public Map<Integer,Double> getTableEarnings()
      Формирует карту с суммарным доходом для каждого столика. Ключ карты - номер столика, значение - общий доход с этого столика.
      Returns:
      карта (Map) со статистикой доходов по столикам
    • getTableVisitCount

      public int getTableVisitCount(int tableNumber)
      Возвращает количество посещений для конкретного столика.
      Parameters:
      tableNumber - номер столика
      Returns:
      количество посещений указанного столика (0, если посещений не было)
    • getTableTotalEarnings

      public double getTableTotalEarnings(int tableNumber)
      Возвращает общий доход, полученный с конкретного столика.
      Parameters:
      tableNumber - номер столика
      Returns:
      сумма дохода с указанного столика в рублях