Recapitulação - Nota do Aluno
Parte da seção Programação Orientada a Objetos do Journey de Lua da Coddy. Lição 18 de 70.
Desafio
FácilVamos criar uma classe Student completa que reúna tudo o que você aprendeu neste capítulo: variáveis de instância, getters, setters e propriedades calculadas, todos trabalhando juntos!
Você organizará seu código em dois arquivos:
Student.lua: Defina sua classeStudentcom o padrão de protótipo convencional. Cada estudante deve armazenar umnamee umagrade. Sua classe precisa de:- Um construtor
:new(name, grade) - Um getter
:getName()que retorne o nome do estudante - Um getter
:getGrade()que retorne a nota atual - Um setter
:setGrade(newGrade)que atualize a nota - Um método
:hasPassed(threshold)que retornetruese a nota do estudante for maior ou igual ao limite, efalsecaso contrário
- Um construtor
main.lua: Importe seu módulo Student e demonstre todas as funcionalidades criando um estudante, verificando sua situação, atualizando sua nota e confirmando as alterações.
Você receberá quatro entradas:
- Nome do estudante
- Nota inicial
- Limite de aprovação a ser verificado
- Nova nota a ser definida
No seu arquivo principal, crie um estudante com o nome e a nota inicial fornecidos e, em seguida, imprima o seguinte em linhas separadas:
- O nome do estudante
- A nota inicial do estudante
- Se o estudante foi aprovado com o limite fornecido (imprima
trueoufalse) - A nota do estudante após atualizá-la com a nova nota
- Se o estudante foi aprovado com o mesmo limite após a atualização da nota
Por exemplo, se as entradas forem Emma, 55, 60 e 75, a saída deverá ser:
Emma
55
false
75
trueEmma tinha inicialmente uma nota 55, que não atingia o limite de aprovação de 60. Depois de atualizar sua nota para 75, ela agora foi aprovada!
Experimente você mesmo
-- Requer o módulo Student
local Student = require('Student')
-- Lê as entradas
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Crie um estudante com o nome e a nota inicial fornecidos
-- TODO: Imprima o nome do estudante usando o getter
-- TODO: Imprima a nota inicial do estudante usando o getter
-- TODO: Verifique e imprima se o estudante passou com o limiar fornecido
-- TODO: Atualize a nota do estudante usando o setter
-- TODO: Imprima a nova nota do estudante
-- TODO: Verifique e imprima se o estudante passou após a atualização da nota
Todas as lições de Programação Orientada a Objetos
1O Conceito 'Self'
Tabelas com Funções'self' ExplícitoA Sintaxe de Dois-pontosPonto vs Dois-pontosRecapitulação - Movendo o Ponto4Projeto: Banco Digital
Configuração do ProjetoMétodo de Depósito7Polimorfismo e Sobrescrita
Sobrescrita de MétodosChamando Métodos da Classe PaiDuck TypingInterface ComumVerificando o TipoRecapitulação - Papéis de Funcionários10Projeto: Gerenciador de Formas
Configuração do ProjetoClasse RetânguloClasse CírculoMétodo PerímetroColeção de FormasÁrea TotalFiltrar Formas2Padrão de Protótipo de Classe
O Conceito de ProtótipoVinculando com __indexO Construtor :new()Inicializando AtributosInstâncias IndependentesRecapitulação - Fábrica de Carros5Sobrecarga de Operadores em POO
Somando ObjetosSubtraindo ObjetosConcatenando ObjetosComparando Objetos (<, >)Recapitulação - Matemática de Carteira8Encapsulamento
Convenções de NomenclaturaClosures para PrivacidadeAcesso via ClosuresTabelas Somente LeituraLógica de ValidaçãoRecapitulação - Cofre Seguro11Padrões de Projeto (Lite)
Funções FactoryTabela SingletonPadrão IteratorObserver (Listener)Recapitulação - Logger Factory3Estado e Comportamento do Objeto
Variáveis de InstânciaMétodos GetterMétodos SetterPropriedades CalculadasFormatação de StringsVerificações de IgualdadeRecapitulação - Nota do Aluno6Fundamentos de Herança
Configurando a HerançaHerdando MétodosEstendendo o ConstrutorAdicionando Métodos FilhosCompartilhado vs ÚnicoRecapitulação - Hierarquia de FormasPratique por conta própria: Compilador de Lua online