Метод пополнения
Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 20 из 70.
Задание
ЛегкоТеперь мы начинаем проект Digital Bank. Пора добавить функциональность в вашу новую систему! Теперь, когда account можно создавать с начальным balance 0, давайте дадим им возможность получать деньги через deposits.
Основываясь на вашем существующем Account class, вы добавите метод :deposit(amount), который увеличивает balance account на указанную сумму. Это фундаментальная банковская операция: деньги поступают, и balance растёт!
Ваши два файла:
Account.lua: расширьте свой Account class, добавив метод:deposit(amount). Этот метод должен добавить given amount кself.balance. Сохраните всё из предыдущего урока (структуру class и конструктор:new()).main.lua: Require ваш Account module, create account, выполните несколько deposits и покажите, как изменяется balance.
Вы получите three входных значения:
- Первый amount deposit
- Второй amount deposit
- Третий amount deposit
В вашем основном файле create single account и Perform three deposits по порядку. after each deposit выведите текущий balance в новой строке.
Например, если входные значения — 100, 50 и 25, вывод должен быть таким:
100
150
175Обратите внимание, как каждый deposit опирается на предыдущий balance: account начинается с 0, затем вырастает до 100 после первого deposit, до 150 после второго и до 175 после третьего. Ваш метод :deposit() обеспечивает это накопление!
Попробуйте сами
-- Подключить модуль Account
local Account = require('Account')
-- Прочитать три суммы депозитов
local deposit1 = tonumber(io.read())
local deposit2 = tonumber(io.read())
local deposit3 = tonumber(io.read())
-- Создать один аккаунт
local account = Account:new()
-- Выполнить три депозита и вывести баланс после каждого
-- TODO: внести deposit1 и вывести account.balance
-- TODO: внести deposit2 и вывести account.balance
-- TODO: внести deposit3 и вывести account.balance
Все уроки раздела Объектно-ориентированное программирование
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигурПотренируйтесь самостоятельно: Онлайн-компилятор Lua