Повторение — Математика кошелька
Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 30 из 70.
Задание
ЛегкоДавайте создадим класс Wallet, который объединит навыки перегрузки операторов, полученные вами в этой главе. Ваш кошелек будет хранить сумму денег и поддерживать две ключевые операции: объединение кошельков с помощью + и сравнение кошельков с помощью <code>< и .
Вы организуете свой код в двух файлах:
Wallet.lua: Определите класс Wallet с полемamount, представляющим количество денег, которое в нем хранится. Включите конструктор:new(amount)и реализуйте два метаметода:__add: Сложение двух кошельков создает новый кошелек, содержащий общую сумму__lt: Сравнение кошельков определяет, в каком из них меньше денег
main.lua: Подключите модуль Wallet, создайте экземпляры кошельков и продемонстрируйте совместную работу обеих операций.
Вы получите три входных значения:
- Сумма в первом кошельке
- Сумма во втором кошельке
- Сумма в третьем кошельке
В основном файле создайте три кошелька с заданными суммами. Затем:
- Сложите первый и второй кошельки вместе, чтобы создать объединенный кошелек
- Выведите сумму объединенного кошелька
- Сравните объединенный кошелек с третьим кошельком, используя <code><, и выведите результат (
trueилиfalse) - Сравните объединенный кошелек с третьим кошельком, используя
, и выведите результат (trueилиfalse)
Например, если входные данные равны 50, 30 и 100, вывод должен быть следующим:
80
true
falseПервый кошелек (50) плюс второй кошелек (30) создают объединенный кошелек с суммой 80. Поскольку 80 меньше 100, первое сравнение дает true. Поскольку 80 не больше 100, второе сравнение дает false.
Попробуйте сами
local Wallet = require('Wallet')
-- Чтение входных данных
local amount1 = tonumber(io.read())
local amount2 = tonumber(io.read())
local amount3 = tonumber(io.read())
-- TODO: Создать три кошелька с заданными суммами
-- TODO: Сложить первый и второй кошельки вместе, чтобы создать объединенный кошелек
-- TODO: Вывести сумму объединенного кошелька
-- TODO: Сравнить объединенный кошелек с третьим кошельком с помощью < и вывести результат
-- TODO: Сравнить объединенный кошелек с третьим кошельком с помощью > и вывести результат
Все уроки раздела Object Oriented Programming
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигур