Информация о счете
Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 23 из 70.
Задание
ЛегкоВаш Цифровой Банк становится более профессиональным! Теперь давайте сделаем так, чтобы ваши счета красиво отображались при выводе на печать. Добавив метаметод __tostring, вы сможете точно контролировать, как выглядит счет — показывая как ID счета, так и текущий баланс в чистом, читаемом формате.
Вы продолжите работу над существующими файлами:
Account.lua: Расширьте свой класс Account двумя новыми функциями:- Измените конструктор
:new(), чтобы он принимал параметрid, который идентифицирует каждый счет - Добавьте метаметод
__tostring, который возвращает отформатированную строку с информацией о счете
- Измените конструктор
main.lua: Создайте счета с ID и продемонстрируйте, как они отображаются при печати.
Метод __tostring должен возвращать строку именно в таком формате:
Account [ID]: Balance = BALANCEГде ID — это идентификатор счета, а BALANCE — текущий баланс.
Вы получите четыре входных значения:
- ID первого счета
- Сумма депозита для первого счета
- ID второго счета
- Сумма депозита для второго счета
В основном файле создайте два счета с указанными 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)
Все уроки раздела Object Oriented Programming
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигур