Метод пополнения
Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy — урок 20 из 70.
Задание
ЛегкоМы начинаем проект Digital Bank. Время добавить функционал в вашу новую систему! Теперь, когда счета могут создаваться с начальным балансом 0, давайте дадим им возможность получать деньги с помощью депозитов.
Опираясь на ваш существующий класс Account, вы добавите метод :deposit(amount), который увеличивает баланс аккаунта на указанную сумму. Это фундаментальная банковская операция — деньги поступают, и баланс растет!
Ваши два файла:
Account.lua: Расширьте ваш класс Account, добавив метод:deposit(amount). Этот метод должен прибавлять переданную сумму кself.balance. Сохраните всё из предыдущего урока (структуру класса и конструктор:new()).main.lua: Подключите модуль Account через require, создайте аккаунт, сделайте несколько депозитов и покажите, как меняется баланс.
Вы получите три входных значения:
- Сумма первого депозита
- Сумма второго депозита
- Сумма третьего депозита
В вашем основном файле создайте один аккаунт и выполните три депозита по порядку. После каждого депозита выводите текущий баланс с новой строки.
Например, если входные данные 100, 50 и 25, то вывод должен быть следующим:
100
150
175Обратите внимание, как каждый депозит дополняет предыдущий баланс — счет начинается с 0, затем увеличивается до 100 после первого депозита, до 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Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигур