Банковский счет
Видео
Если вам лень постоянно пересоздавать проекты для ката, скачайте bat. Как им пользоваться можно почитать тут
Задача
Напишите класс, отвечающий за операции с банковским счетом пользователей.
Критерии приемлемости
Весь код должен быть покрыт тестами.
- Создайте метод добавления записи о клиенте, принимающий id клиента (int).
- Метод возвращает 0 в случае успеха, начальное значение счета = 0
- Метод возвращает 100, если счет на клиента с пришедшим id уже заводился ранее
- Создайте метод получения значения счета, принимающий id клиента (int)
- Метод возвращает объект {ErrorCode = 200, Result = 0} если на клиента с таким id не открывался счет
- Метод возвращает объект {ErrorCode = 0, Result = [сумма на счете]} в случае успеха
- Создайте метод снятия/пополнения принимающий id клиента(int) и сумму операции (отрицательное число в случае снятия)
- Метод возвращает 200 если на клиента с таким id не открывался счет
- Метод возвращает 0 в случае успеха
- Сумма на счете должна измениться в соответствии с преведенной операцией
- Метод возвращает 300 eсли на счете клиента не достаточно средств
- Создайте метод, позволяющий отменить последнюю операцию, принимающий id клиента (int)
- Метод возвращает 200 если на клиента с таким id не открывался счет
- Метод по-прежнему возвращает объект {ErrorCode = 0}, если история операций пуста и удалять нечего
- Значение на счете должно вернуться к состоянию до последней проведенной операции
- Mетод снятия/пополнения, в случае успеха, должен возвращать {ErrorCode = 0, Result = "#[номер операции]"}
- Номер операции не относится к конкретному клиенту и отражает общее количество проведенных экземпляром класса операций
- Отмена операции не влияет на подсчет номеров
- Предоставить возможность отмены любого количества операций, добавив в метод из п.5 второй параметр - количество отменяемых операций
Критерий времени
Нормальный результат для разработчика (не junior) — до 30 минут на выполнение всех требований.