Menu
Coddy logo textTech

Информация о счете

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

challenge icon

Задание

Легко

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

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

  • Account.lua: расширьте свой class Account двумя новыми возможностями:
    • Измените конструктор :new(), чтобы он принимал параметр id, идентифицирующий каждый счёт
    • Добавьте метаметод __tostring, который возвращает отформатированную строку с информацией о счёте
    Сохраните всю существующую функциональность (методы deposit, withdraw и getBalance).
  • main.lua: создайте счета с ID и продемонстрируйте, как они отображаются при печати.

Метод __tostring должен возвращать строку в точно таком формате:

Account [ID]: Balance = BALANCE

Здесь ID — это ID счёта, а BALANCE — текущий баланс.

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

  1. ID первого счёта
  2. Сумма deposit для первого счёта
  3. ID второго счёта
  4. Сумма deposit для второго счёта

В основном файле создайте два счёта с заданными ID, внесите соответствующие суммы на каждый из них, затем напрямую выведите каждый счёт с помощью print(). Метаметод __tostring будет автоматически вызван при печати объекта счёта.

Например, если входные значения — 1001, 500, 1002 и 750, результатом должен быть:

Account [1001]: Balance = 500
Account [1002]: Balance = 750

Теперь каждый счёт обладает уникальной идентичностью и может понятно описать себя: банковский опыт стал гораздо более профессиональным!

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

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

-- Прочитать четыре входных значения
local id1 = io.read()
local deposit1 = tonumber(io.read())
local id2 = io.read()
local deposit2 = tonumber(io.read())

-- Создать два счёта с ID
local account1 = Account:new(id1)
local account2 = Account:new(id2)

-- Внести соответствующие суммы
account1:deposit(deposit1)
account2:deposit(deposit2)

-- Вывести каждый счёт (использует __tostring)
print(account1)
print(account2)

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

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