Код IT
← Каталог

Учебные примеры ООП — Студент

Список оценок, средний балл и проходной порог.

Lua main.lua
local Student = {PASSING_SCORE = 60}

function Student:new(name)
    local obj = setmetatable({name = name, grades = {}}, {__index = self})
    return obj
end

function Student:add_grade(grade)
    table.insert(self.grades, grade)
    print("Оценка " .. grade .. " добавлена для " .. self.name)
end

function Student:average_score()
    if #self.grades == 0 then
        return 0
    end
    local sum = 0
    for _, g in ipairs(self.grades) do
        sum = sum + g
    end
    return sum / #self.grades
end

function Student:is_passing()
    return self:average_score() >= self.PASSING_SCORE
end

function Student:info()
    local avg = self:average_score()
    print("Студент: " .. self.name)
    print("Оценки: " .. table.concat(self.grades, ", "))
    print(string.format("Средний балл: %.1f", avg))
    if self:is_passing() then
        print("Зачёт получен")
    else
        print("Зачёт не получен")
    end
end

local student = Student:new("Анна")
student:add_grade(70)
student:add_grade(85)
student:add_grade(55)
student:info()
local Student = {PASSING_SCORE = 60}

function Student:new(name)
    local obj = setmetatable({name = name, grades = {}}, {__index = self})
    return obj
end

function Student:add_grade(grade)
    table.insert(self.grades, grade)
    print("Оценка " .. grade .. " добавлена для " .. self.name)
end

function Student:average_score()
    if #self.grades == 0 then
        return 0
    end
    local sum = 0
    for _, g in ipairs(self.grades) do
        sum = sum + g
    end
    return sum / #self.grades
end

function Student:is_passing()
    return self:average_score() >= self.PASSING_SCORE
end

function Student:info()
    local avg = self:average_score()
    print("Студент: " .. self.name)
    print("Оценки: " .. table.concat(self.grades, ", "))
    print(string.format("Средний балл: %.1f", avg))
    if self:is_passing() then
        print("Зачёт получен")
    else
        print("Зачёт не получен")
    end
end

local student = Student:new("Анна")
student:add_grade(70)
student:add_grade(85)
student:add_grade(55)
student:info()