Menu
CoddyTech

回顾:学生成绩

本课属于 Coddy Lua 学习旅程的“面向对象编程”单元。第 18 课,共 70 课。

challenge icon

挑战

简单

让我们来构建一个完整的 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 个输入:

  1. 学生姓名
  2. 初始成绩
  3. 要检查的及格阈值
  4. 要设置的新成绩

在主文件中,使用给定的姓名和初始成绩创建一名学生,然后按以下顺序逐行打印:

  1. 学生姓名
  2. 学生的初始成绩
  3. 学生是否达到给定的及格阈值(打印 true 或 false)
  4. 更新为新成绩后的学生成绩
  5. 更新成绩后,学生是否达到相同的及格阈值

例如,如果输入是 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:使用 getter 打印学生的姓名

-- TODO:使用 getter 打印学生的初始成绩

-- TODO:根据给定的及格线检查并打印学生是否及格

-- TODO:使用 setter 更新学生的成绩

-- TODO:打印学生的新成绩

-- TODO:检查并打印成绩更新后学生是否及格

面向对象编程中的所有课

自己练习: Lua 在线编译器