Калькулятор денег(класс CashCalculator(класс-родитель Calculator)):
- Сохраняет новую запись о расходах методом add_record()
- Считает, сколько денег потрачено сегодня методом get_today_stats()
- Определяет, сколько ещё денег можно потратить сегодня в рублях, долларах или евро — метод get_today_cash_remained(currency)
- Считает, сколько денег потрачено за последние 7 дней — метод get_week_stats()
Калькулятор калорий (класс CaloriesCalculator(класс-родитель Calculator)):
- Сохраняет новую запись о приёме пищи— метод add_record()
- Считает, сколько калорий уже съедено сегодня — метод get_today_stats()
- Определяет, сколько ещё калорий можно/нужно получить сегодня — метод get_calories_remained()
- Считает, сколько калорий получено за последние 7 дней — метод get_week_stats()
Конструктор класса Calculator принимает один аргумент — число limit (дневной лимит трат/калорий, который задал пользователь). В конструкторе создан пустой список records, в котором потом будут храниться записи.
Чтобы было удобнее создавать записи, для них создан отдельный класс Record. В нем сохраняются:
- число amount (денежная сумма или количество килокалорий),
- дата создания записи date (передаётся в явном виде в конструктор, либо присваивается значение по умолчанию — текущая дата),
- комментарий comment, поясняющий, на что потрачены деньги или откуда взялись калории.
Метод get_calories_remained() класса CaloriesCalculator возвращает ответ:
- «Сегодня можно съесть что-нибудь ещё, но с общей калорийностью не более N кКал», если лимит limit не достигнут,
- или «Хватит есть!», если лимит достигнут или превышен.
Метод get_today_cash_remained(currency) класса CashCalculator принимает на вход код валюты: одну из строк "rub", "usd" или "eur". Возвращает он сообщение о состоянии дневного баланса в этой валюте, округляя сумму до двух знаков после запятой (до сотых):
- «На сегодня осталось N руб/USD/Euro» — в случае, если лимит limit не достигнут,
- или «Денег нет, держись», если лимит достигнут,
- или «Денег нет, держись: твой долг - N руб/USD/Euro», если лимит превышен. Курс валют указан константами USD_RATE и EURO_RATE, в теле класса CashCalculator.