Повторение — менеджер банковского счёта
Часть раздела Объектно-ориентированное программирование путешествия по GDScript на Coddy. Урок 14 из 65.
Задание
СреднеНапиши класс BankAccount в файле bank_account.gd. Он объединяет всё, что изучалось в этой главе.
- Статическая переменная типа
intinterest_percent, которая начинается со значения2и является общей для всех счетов - Два приватных свойства:
_owner_name(типаString) и_balance(типаint, начинается со значения0) - Свойство только для чтения
owner_name, геттер которого возвращает_owner_name - Свойство
balance, геттер которого возвращает_balance, а сеттер выводитBalance cannot be negativeдля отрицательного значения и в противном случае сохраняет значение в_balance - Конструктор
_init(account_owner, start_balance)сохраняет имя владельца и присваиваетstart_balanceсвойствуbalance, чтобы оно проверялось сеттером
А также следующие методы:
deposit(amount): выводитDeposit amount must be positiveи возвращаетfalse, еслиamountменьше или равен0; в противном случае прибавляет эту сумму и возвращаетtruewithdraw(amount): выводитWithdrawal amount must be positiveи возвращаетfalse, еслиamountменьше или равен0; выводитInsufficient fundsи возвращаетfalse, если сумма превышает баланс; в противном случае вычитает её и возвращаетtrueapply_interest(): прибавляет к балансу_balance * interest_percent / 100(целое количество долларов) и возвращает сумму начисленных процентовdisplay_info(): выводит три строки:Account Owner: NAME,Balance: $BALANCEиInterest Rate: PERCENT%
Предоставленный код считывает owner start_balance, количество следующих команд и команды deposit N, withdraw N, set N (присваивает значение свойству balance), interest, rate N (задаёт значение BankAccount.interest_percent) и info. Он выводит строку для каждого успешного внесения, снятия и начисления процентов, а в конце — баланс владельца. Для Coddy 1000 и команд deposit 500, withdraw 200, interest, info, set 5000 и withdraw 10000 он выводит:
Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000Твой код нужно написать в файле bank_account.gd. В main.gd находится предоставленный код ввода и вывода, его нельзя редактировать.
Попробуйте сами
extends Node
func _ready():
# Предоставленный код ввода-вывода: оставьте его без изменений
var first := OS.read_string_from_stdin().split(" ")
var account := BankAccount.new(first[0], int(first[1]))
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
match parts[0]:
"deposit":
if account.deposit(int(parts[1])):
print("Deposited $%s" % parts[1])
"withdraw":
if account.withdraw(int(parts[1])):
print("Withdrew $%s" % parts[1])
"set":
account.balance = int(parts[1])
"interest":
print("Interest earned: $%d" % account.apply_interest())
"rate":
BankAccount.interest_percent = int(parts[1])
"info":
account.display_info()
print("%s has $%d" % [account.owner_name, account.balance])
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыВведение в ООПКлассы и объектыКлючевое слово selfМетодыСвойстваКонструктор (_init)Повторение: простой калькулятор4Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур7Сигналы
Что такое сигнал?Объявление и отправкаПодключение к сигналамСигналы с аргументамиПовторение — система здоровья10Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»2Свойства классов
Переменные экземпляра и классаСтатические функцииСеттеры свойствГеттеры свойствПриватность по соглашениюПовторение — менеджер банковского счёта5Инкапсуляция
Открытые и закрытые членыПроверка данных с помощью сеттеровСокрытие информацииСвойства только для чтенияПовторение — система учета студентов8Продвинутые концепции ООП
Композиция и наследованиеВнутренние классыУзлы как компонентыRefCounted и NodeПеречисления в классах11Проект: Управление библиотекой
Обзор проектаКлассы книг и пользователей3Наследование
Основы наследованияКлючевое слово superПереопределение методовЦепочки наследованияПроверка типов с помощью isПовторение — иерархия сотрудников6Специальные методы
Введение в виртуальные методыМетод _to_stringПользовательские итераторыПовторение: пользовательский список9Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»Потренируйтесь самостоятельно: Онлайн-компилятор GDScript