Повторение — Оценка студента
Часть раздела Object Oriented Programming путешествия по Lua на Coddy — урок 18 из 70.
Задание
ЛегкоДавайте создадим полноценный класс Student, который объединит в себе все, что вы узнали в этой главе: переменные экземпляра, геттеры, сеттеры и вычисляемые свойства, работающие вместе!
Вы организуете свой код в двух файлах:
Student.lua: Определите классStudent, используя стандартный паттерн прототипа. Каждый студент должен хранитьnameиgrade. Вашему классу необходимы:- Конструктор
:new(name, grade) - Геттер
:getName(), который возвращает имя студента - Геттер
:getGrade(), который возвращает текущую оценку - Сеттер
:setGrade(newGrade), который обновляет оценку - Метод
:hasPassed(threshold), который возвращаетtrue, если оценка студента больше или равна пороговому значению (threshold), иfalseв противном случае
- Конструктор
main.lua: Подключите модуль Student и продемонстрируйте всю функциональность, создав студента, проверив его статус, обновив оценку и верифицировав изменения.
Вы получите четыре входных значения:
- Имя студента
- Начальная оценка
- Проходной порог для проверки
- Новая оценка для установки
В основном файле создайте студента с указанным именем и начальной оценкой, затем выведите следующее на отдельных строках:
- Имя студента
- Начальная оценка студента
- Прошел ли студент порог с заданным значением (выведите
trueилиfalse) - Оценка студента после обновления на новую оценку
- Прошел ли студент порог с тем же значением после обновления оценки
Например, если входные данные — Emma, 55, 60 и 75, вывод должен быть следующим:
Emma
55
false
75
trueУ Emma изначально была оценка 55, что не соответствовало проходному порогу 60. После обновления её оценки до 75, теперь она проходит!
Попробуйте сами
-- Подключить модуль 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: Вывести имя студента, используя геттер
-- 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Основы наследования
Настройка наследованияНаследование методовРасширение конструктораДобавление дочерних методовОбщее и уникальноеИтоги: Иерархия фигур