Menu
Coddy logo textTech

Метод снятия

Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 21 из 70.

challenge icon

Задание

Легко

Ваш Digital Bank растёт! Теперь счета могут получать депозиты, но настоящему банку также нужно позволять клиентам снимать деньги. Давайте добавим метод :withdraw(amount), но с важной проверкой безопасности.

В отличие от депозитов, снятие средств может завершиться неудачей. Если клиент пытается снять больше денег, чем у него есть, банк не должен этого позволять. Ваш метод withdraw должен проверить, достаточно ли средств, прежде чем вычитать сумму.

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

  • Account.lua: добавьте метод :withdraw(amount) в существующий класс Account. Если на счёте достаточно средств, вычтите сумму и верните true. Если средств недостаточно, выведите Insufficient funds и верните false, не изменяя баланс.
  • main.lua: создайте счёт, внесите депозит, чтобы на нём появились средства, затем выполните несколько попыток снятия, чтобы увидеть как успешные, так и неудачные транзакции.

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

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

В основном файле создайте счёт, внесите первоначальную сумму, затем последовательно выполните каждую попытку снятия. После каждой попытки снятия выведите текущий баланс в новой строке. Помните, что неудачные попытки снятия также выведут Insufficient funds перед выводом баланса.

Например, если входные значения — 100, 30, 50 и 40, результат должен быть таким:

70
20
Insufficient funds
20

После внесения депозита баланс счёта становится равен 100. Первое снятие на 30 проходит успешно (баланс: 70), второе снятие на 50 также проходит успешно (баланс: 20), но третье снятие на 40 завершается неудачей, поскольку остаётся только 20, поэтому баланс остаётся равным 20.

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

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

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

-- Создать один счёт
local account = Account:new()

-- Внести начальную сумму
account:deposit(initialDeposit)

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

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

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

Все уроки раздела Объектно-ориентированное программирование

Потренируйтесь самостоятельно: Онлайн-компилятор Lua