Настройка проекта
Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 19 из 70.
Задание
ЛегкоМы начинаем проект Digital Bank. В следующих уроках вы создадите класс Account, который сможет принимать депозиты, обрабатывать снятие средств, выводить себя и переводить деньги на другие счета. Всё начинается с аккуратной структуры файлов и конструктора.
Ваши two файла:
Account.lua: определите таблицуAccount, задайтеAccount.__index = Account, чтобы instances находили свои methods, и напишите конструктор:new(). Он создаёт пустую таблицу, устанавливает для неё метатаблицуAccount, задаёт ейbalanceравный0и возвращает её. file заканчивается строкойreturn Account.main.lua: подключите module с помощьюrequire('Account'), создайте two счета с помощьюAccount:new(), выведите balance каждого account в отдельной строке, затем выведитеsavings == checking, чтобы показать, что two вызова создали two different tables.
Ожидаемый вывод:
0
0
falseКаждый account начинается с нулевого значения. В следующем уроке вы добавите method :deposit(amount), который увеличивает balance.
Попробуйте сами
-- TODO: подключите модуль Account (файл — Account.lua)
local Account = nil
-- TODO: создайте два аккаунта с помощью Account:new()
-- TODO: выведите баланс каждого аккаунта (по одному на строку)
-- TODO: выведите, являются ли два аккаунта одной и той же таблицей (они не должны быть)
Все уроки раздела Объектно-ориентированное программирование
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигурПотренируйтесь самостоятельно: Онлайн-компилятор Lua