回顾:学生成绩
本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 18 课,共 70 课。
挑战
简单让我们来构建一个完整的 Student 类,把你在本章学到的所有内容结合起来:实例变量、getter、setter 和协同工作的计算属性!
你要把代码分成两个文件:
Student.lua:使用标准原型模式定义Student类。每个学生都应保存一个name和一个grade。你的类需要包含:- 一个
:new(name, grade)构造函数 - 一个返回学生姓名的
:getName()getter - 一个返回当前成绩的
:getGrade()getter - 一个用于更新成绩的
:setGrade(newGrade)setter - 一个
:hasPassed(threshold)方法,如果学生的成绩大于或等于阈值,则返回true,否则返回false
- 一个
main.lua:引入你的 Student 模块,并通过创建学生、检查状态、更新成绩和验证更改来展示所有功能。
你会收到 4 个输入:
- 学生姓名
- 初始成绩
- 要检查的及格阈值
- 要设置的新成绩
在主文件中,使用给定的姓名和初始成绩创建一名学生,然后按以下顺序逐行打印:
- 学生姓名
- 学生的初始成绩
- 学生是否达到给定的及格阈值(打印
true或false) - 更新为新成绩后的学生成绩
- 更新成绩后,学生是否达到相同的及格阈值
例如,如果输入是 Emma、55、60 和 75,输出应为:
Emma
55
false
75
trueEmma 一开始的成绩是 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:使用 getter 打印学生的姓名
-- TODO:使用 getter 打印学生的初始成绩
-- TODO:根据给定的及格线检查并打印学生是否及格
-- TODO:使用 setter 更新学生的成绩
-- TODO:打印学生的新成绩
-- TODO:检查并打印成绩更新后学生是否及格
面向对象编程中的所有课
自己练习: Lua 在线编译器