Настройка проекта
Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 55 из 70.
Задание
ЛегкоДавайте заложим основу системы Shape Manager! Этот проект будет развиваться в следующих уроках, поэтому начнём с создания чистой структуры файлов с базовым классом Shape.
Вы создадите два файла, чтобы организовать свой код:
Shape.lua: Define базовый классShapeс использованием шаблона prototype. У каждой фигуры есть атрибутname(например, "Circle" или "Rectangle"). Добавьте конструктор:new(name), который принимает имя фигуры, и метод:getName(), который его возвращает.main.lua: Задействуйте свой класс Shape, подключив module и создав экземпляр фигуры. Считайте имя фигуры из input, создайте Shape с этим именем и выведите result вызова:getName().
Этот базовый class будет родительским для конкретных фигур, таких как Rectangle и Circle, в следующих уроках. А пока сосредоточьтесь на правильной структуре класса: настройке __index, шаблоне конструктора и методе получения значения.
Ввод: Одна строка, содержащая имя фигуры (строка).
Вывод: Имя фигуры, возвращённое методом :getName().
Попробуйте сами
-- Подключить модуль Shape
local Shape = require('Shape')
-- Прочитать имя фигуры из ввода
local shapeName = io.read()
-- TODO: Создать новый экземпляр Shape с заданным именем
-- TODO: Вывести результат вызова :getName() для вашей фигуры
Все уроки раздела Объектно-ориентированное программирование
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников10Проект: Менеджер фигур
Настройка проектаКласс RectangleКласс CircleМетод PerimeterКоллекция фигурОбщая площадьФильтрация фигур2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигурПотренируйтесь самостоятельно: Онлайн-компилятор Lua