Menu
Coddy logo textTech

Финальное тестирование банка

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

challenge icon

Задание

Легко

Поздравляем с созданием полноценной системы цифрового банка! Ваш класс Account теперь поддерживает депозиты, снятие средств, проверку баланса, идентификацию счетов и переводы между счетами. Давайте проверим все это в деле на примере реалистичного сценария банковского обслуживания нескольких счетов.

В этом финальном испытании вы смоделируете работу небольшого банка с тремя клиентами, совершающими различные транзакции. Это позволит убедиться, что все ваши методы корректно работают вместе и что счета действительно сохраняют независимое состояние.

Ваши два файла:

  • Account.lua: Ваш готовый класс Account со всей функциональностью, которую вы создали в ходе этого проекта (конструктор с ID, deposit, withdraw, getBalance, __tostring и transfer).
  • main.lua: Скрипт симуляции, который создает несколько счетов и выполняет серию транзакций между ними.

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

  1. ID счета 1
  2. ID счета 2
  3. ID счета 3
  4. Начальный депозит для счета 1
  5. Начальный депозит для счета 2
  6. Начальный депозит для счета 3

В вашем основном файле (main) смоделируйте следующий банковский день:

  1. Создайте три счета с указанными ID
  2. Внесите начальные суммы на каждый соответствующий счет
  3. Счет 1 переводит 100 на счет 2
  4. Счет 2 переводит 150 на счет 3
  5. Счет 3 переводит 50 на счет 1
  6. Счет 1 пытается перевести 1000 на счет 3 (это должно завершиться ошибкой)
  7. Выведите информацию о всех трех счетах по порядку (Счет 1, затем 2, затем 3)

Например, если входные данные — A001, A002, A003, 500, 300 и 200, результат должен быть следующим:

Insufficient funds
Account [A001]: Balance = 450
Account [A002]: Balance = 250
Account [A003]: Balance = 300

Давайте проследим за операциями: Счет 1 начинает с 500, переводит 100 счету 2 (остается 400), затем получает 50 от счета 3 (становится 450). Счет 2 начинает с 300, получает 100 (становится 400), переводит 150 счету 3 (остается 250). Счет 3 начинает с 200, получает 150 (становится 350), переводит 50 счету 1 (остается 300). Последний перевод в 1000 не удается, так как на счету 1 всего 450.

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

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

-- Прочитать шесть входных значений
local id1 = io.read()
local id2 = io.read()
local id3 = io.read()
local initialDeposit1 = tonumber(io.read())
local initialDeposit2 = tonumber(io.read())
local initialDeposit3 = tonumber(io.read())

-- Создать три аккаунта с идентификаторами
-- TODO: создать account1, account2, account3, используя Account:new()

-- Внести начальные суммы на каждый соответствующий счет
-- TODO: внести initialDeposit1 на account1, initialDeposit2 на account2, initialDeposit3 на account3

-- Аккаунт 1 переводит 100 на Аккаунт 2
-- TODO: account1:transfer(account2, 100)

-- Аккаунт 2 переводит 150 на Аккаунт 3
-- TODO: account2:transfer(account3, 150)

-- Аккаунт 3 переводит 50 на Аккаунт 1
-- TODO: account3:transfer(account1, 50)

-- Аккаунт 1 пытается перевести 1000 на Аккаунт 3 (это должно завершиться ошибкой)
-- TODO: account1:transfer(account3, 1000)

-- Вывести все три аккаунта по порядку
-- TODO: вывести account1, account2, account3

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