Хранилище
Лена не доверяет стойке: она хочет хранить своё золото в хранилище банка, глубоко под землёй. В массиве accounts её счёт теперь создаётся через new VaultAccount("Лена", 75), а последняя операция за сегодня — её снятие.
Счёт в хранилище работает как любой другой, но с двумя отличиями. Каждое снятие стоит ещё vaultFee золота комиссии, поэтому оно не удаётся, если на счёте не хватает и на сумму, и на комиссию. А в списке счетов после золота у такого счёта стоит (хранилище). Лена снимает 60 золотых, что обходится ей в 62, так что остаётся 13:
Кира: золото 120
Бруно: золото 40
Лена: золото 75 (хранилище)
В банке золота: 235.
Бруно вносит золото: 30. Баланс: 70
Кира снимает золото: 50. Баланс: 70
Бруно снимает золото: 100. Отказ: не хватает золота
Мира вносит золото: 10. Отказ: нет счёта
Лена снимает золото: 60. Баланс: 13
Кира: золото 70
Бруно: золото 70
Лена: золото 13 (хранилище)
В банке золота: 153.Совет: класс, который расширяет Account, наследует от него всё; он может переопределить методы, работающие иначе, и вызвать версию родителя через super, как в уроке «Классы».
Вот и весь проект. Ваш банк хранит золото в объектах, которые сами охраняют свои правила, результат каждой операции говорит, удалась ли она и почему нет, а новый вид счёта потребовал всего одного короткого класса. В следующем уроке, «Вспомогательные типы», вы будете строить новые типы из тех, что у вас есть. А в итоговом проекте соберёте вместе весь курс.
Задание
- 1
Напишите класс
VaultAccount, чтобы счёт Лены выводился с пометкой(хранилище). - 2
Сделайте так, чтобы снятие со счёта в хранилище стоило комиссию.