Menu
Coddy logo textTech

Получение баланса

Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 22 из 70.

challenge icon

Задание

Легко

Ваш Цифровой Банк действительно обретает форму! Счета могут принимать депозиты и обрабатывать снятие средств с надлежащей проверкой баланса. Теперь давайте добавим метод-геттер для получения баланса, а затем объединим все в реалистичном банковском сценарии.

Вы продолжите работу над существующими файлами:

  • Account.lua: Добавьте метод :getBalance(), который возвращает текущий баланс. Это следует паттерну геттера, который вы изучили ранее — предоставление контролируемого доступа к внутренним данным вместо прямого обращения к полю. Сохраните всю существующую функциональность (конструктор, методы deposit и withdraw).
  • main.lua: Создайте счет и выполните последовательность банковских операций, чтобы продемонстрировать, как депозиты, снятия и проверки баланса работают вместе в реальном сценарии.

Вы получите пять входных значений:

  1. Сумма начального депозита
  2. Сумма первого снятия
  3. Сумма второго депозита
  4. Сумма второго снятия
  5. Сумма третьего снятия

В вашем основном файле создайте счет и выполните следующие операции по порядку:

  1. Внесите начальную сумму, затем выведите баланс, используя :getBalance()
  2. Снимите первую сумму, затем выведите баланс
  3. Внесите вторую сумму, затем выведите баланс
  4. Снимите вторую сумму, затем выведите баланс
  5. Попробуйте выполнить третье снятие, затем выведите баланс

Помните, что при неудачном снятии средств будет выведено сообщение Insufficient funds перед тем, как вы выведете баланс.

Например, если входные данные — 200, 50, 100, 180 и 100, вывод должен быть следующим:

200
150
250
70
Insufficient funds
70

Счет начинается с 200, опускается до 150 после первого снятия, поднимается до 250 после еще одного депозита, падает до 70 после снятия 180 и остается на уровне 70, когда последнее снятие 100 не удается из-за недостатка средств.

Попробуйте сами

-- Подключить модуль Account
local Account = require('Account')

-- Прочитать пять входных значений
local initialDeposit = tonumber(io.read())
local withdrawal1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local withdrawal2 = tonumber(io.read())
local withdrawal3 = tonumber(io.read())

-- Создать один аккаунт
local account = Account:new()

-- Внести начальную сумму и вывести баланс с помощью :getBalance()
account:deposit(initialDeposit)
print(account:getBalance())

-- Попытаться выполнить первое снятие и вывести баланс
account:withdraw(withdrawal1)
print(account:getBalance())

-- Внести вторую сумму и вывести баланс
account:deposit(deposit2)
print(account:getBalance())

-- Попытаться выполнить второе снятие и вывести баланс
account:withdraw(withdrawal2)
print(account:getBalance())

-- Попытаться выполнить третье снятие и вывести баланс
account:withdraw(withdrawal3)
print(account:getBalance())

Все уроки раздела Object Oriented Programming