Повторение — Оценка студента
Часть раздела Объектно-ориентированное программирование путешествия по Lua на Coddy. Урок 18 из 70.
Задание
ЛегкоДавайте создадим полный класс Student, который объединяет всё, чему вы научились в этой главе: переменные экземпляра, getter-ы, setter-ы и вычисляемые свойства, работающие вместе!
Вы организуете код в двух файлах:
Student.lua: Define ваш классStudentсо стандартным шаблоном prototype. Каждый student должен хранитьnameиgrade. Вашему классу нужны:- конструктор
:new(name, grade) - getter
:getName(), который возвращает имя student - getter
:getGrade(), который возвращает current grade - setter
:setGrade(newGrade), который обновляет grade - method
:hasPassed(threshold), который возвращаетtrue, если grade student больше или равен threshold, иfalseв противном случае
- конструктор
main.lua: Require ваш модуль Student и продемонстрируйте все возможности, создав student, проверив его статус, обновив его grade и проверив изменения.
Вы получите четыре входных значения:
- Имя student
- Initial grade
- Порог threshold для проверки
- New grade, который нужно установить
В вашем основном файле создайте student с given именем и initial grade, затем выведите следующие значения в отдельных строках:
- Имя student
- Initial grade student
- Whether student passed с given threshold (выведите
trueилиfalse) - Grade student после обновления с использованием new grade
- Whether student passed с тем же threshold после обновления grade
Например, если входные значения — Emma, 55, 60 и 75, вывод должен быть таким:
Emma
55
false
75
trueИзначально Emma получила grade 55, который не достигал passing threshold, равного 60. После обновления её grade до 75 она теперь passed!
Попробуйте сами
-- Подключить модуль Student
local Student = require('Student')
-- Прочитать входные данные
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Создать студента с заданным именем и начальной оценкой
-- TODO: Вывести имя студента, используя getter
-- TODO: Вывести начальную оценку студента, используя getter
-- TODO: Проверить и вывести, сдал ли студент с заданным порогом
-- TODO: Обновить оценку студента, используя setter
-- TODO: Вывести новую оценку студента
-- TODO: Проверить и вывести, сдал ли студент после обновления оценки
Все уроки раздела Объектно-ориентированное программирование
1Концепция 'self'
Таблицы с функциямиЯвный 'self'Синтаксис с двоеточиемТочка против двоеточияИтоги — Движущаяся точка4Проект: Цифровой банк
Настройка проектаМетод пополнения7Полиморфизм и переопределение
Переопределение методовВызов родительских методовУтиная типизацияОбщий интерфейсПроверка типаИтоги — Роли сотрудников2Паттерн прототипа класса
Концепция прототипаСвязывание через __indexКонструктор :new()Инициализация атрибутовНезависимые экземплярыИтоги — Автозавод5Перегрузка операторов в ООП
Сложение объектовВычитание объектовКонкатенация объектовСравнение объектов (<, >)Повторение — Математика кошелька8Инкапсуляция
Соглашения об именованииЗамыкания для приватностиДоступ через замыканияТаблицы только для чтенияЛогика валидацииИтоги — Защищенное хранилище11Паттерны проектирования (Lite)
Фабричные функцииТаблица SingletonПаттерн IteratorObserver (Слушатель)Итоги — Logger Factory3Состояние и поведение объектов
Переменные экземпляраГеттерыСеттерыВычисляемые свойстваФорматирование строкПроверка на равенствоПовторение — Оценка студента6Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигурПотренируйтесь самостоятельно: Онлайн-компилятор Lua