Итоги — Автозавод
Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 11 из 70.
Задание
ЛегкоДавайте создадим полноценный класс Car, который объединит все, что вы узнали в этой главе! Вы создадите систему автомобильного завода, где каждый автомобиль имеет свою модель и цвет, демонстрируя правильную организацию модулей и независимые экземпляры.
Вы распределите свой код по двум файлам:
Car.lua: Определите классCar, следуя стандартному шаблону прототипа. Вашему классу нужен конструктор:new(model, color), который создает автомобили с их собственными атрибутами. Включите метод:describe(), который позволяет каждому автомобилю представиться.main.lua: Подключите модуль Car и создайте несколько экземпляров автомобилей, чтобы продемонстрировать, что каждый автомобиль сохраняет свое собственное независимое состояние.
Ваш метод :describe() должен выводить данные именно в таком формате:
A [color] [model]Вы получите четыре входных значения:
- Модель для первого автомобиля
- Цвет для первого автомобиля
- Модель для второго автомобиля
- Цвет для второго автомобиля
В основном файле создайте два автомобиля, используя предоставленные входные данные, и пусть каждый из них опишет себя на отдельной строке.
Например, если входные данные — Sedan, blue, Truck и red, вывод должен быть следующим:
A blue Sedan
A red TruckКаждый автомобиль должен хранить свою модель и цвет, доказывая, что ваш класс создает по-настоящему независимые экземпляры.
Попробуйте сами
-- Подключить модуль Car
local Car = require('Car')
-- Прочитать входные данные
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO: Создать два экземпляра автомобиля, используя Car:new()
-- TODO: Вызвать :describe() для каждого автомобиля, чтобы вывести их описания
Все уроки раздела Object Oriented Programming
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигур