Récapitulatif - Note de l'étudiant
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 18 sur 70.
Défi
FacileConstruisons une classe Student complète qui rassemble tout ce que vous avez appris dans ce chapitre : variables d'instance, getters, setters et propriétés calculées, le tout fonctionnant ensemble !
Vous organiserez votre code sur deux fichiers :
Student.lua: Définissez votre classeStudentavec le modèle de prototype standard. Chaque étudiant doit stocker unnameet unegrade. Votre classe a besoin de :- Un constructeur
:new(name, grade) - Un getter
:getName()qui retourne le nom de l'étudiant - Un getter
:getGrade()qui retourne la note actuelle - Un setter
:setGrade(newGrade)qui met à jour la note - Une méthode
:hasPassed(threshold)qui retournetruesi la note de l'étudiant est supérieure ou égale au seuil (threshold), sinonfalse
- Un constructeur
main.lua: Importez votre module Student et démontrez toutes les fonctionnalités en créant un étudiant, en vérifiant son statut, en mettant à jour sa note et en vérifiant les changements.
Vous recevrez quatre entrées :
- Le nom de l'étudiant
- La note initiale
- Le seuil de réussite à vérifier
- La nouvelle note à définir
Dans votre fichier principal, créez un étudiant avec le nom et la note initiale donnés, puis affichez les éléments suivants sur des lignes séparées :
- Le nom de l'étudiant
- La note initiale de l'étudiant
- Si l'étudiant a réussi avec le seuil donné (affichez
trueoufalse) - La note de l'étudiant après l'avoir mise à jour avec la nouvelle note
- Si l'étudiant a réussi avec le même seuil après la mise à jour de la note
Par exemple, si les entrées sont Emma, 55, 60, et 75, la sortie devrait être :
Emma
55
false
75
trueEmma avait initialement une note de 55, ce qui ne respectait pas le seuil de réussite de 60. Après avoir mis à jour sa note à 75, elle réussit maintenant !
Essayez vous-même
-- Requiert le module Student
local Student = require('Student')
-- Lit les entrées
local name = io.read()
local initialGrade = tonumber(io.read())
local threshold = tonumber(io.read())
local newGrade = tonumber(io.read())
-- TODO: Créer un étudiant avec le nom et la note initiale donnés
-- TODO: Afficher le nom de l'étudiant en utilisant le getter
-- TODO: Afficher la note initiale de l'étudiant en utilisant le getter
-- TODO: Vérifier et afficher si l'étudiant a réussi avec le seuil donné
-- TODO: Mettre à jour la note de l'étudiant en utilisant le setter
-- TODO: Afficher la nouvelle note de l'étudiant
-- TODO: Vérifier et afficher si l'étudiant a réussi après la mise à jour de la note
Toutes les leçons de Object Oriented Programming
1Le concept de « self »
Tables avec fonctions« self » expliciteLa syntaxe avec deux-pointsPoint vs deux-pointsRécapitulatif - Point mobile4Projet : Banque numérique
Configuration du projetMéthode de dépôt7Polymorphisme et Redéfinition
Redéfinition de méthodesAppeler des méthodes parentesDuck TypingInterface communeVérification du typeRécapitulatif - Rôles des employés10Projet : Gestionnaire de formes
Configuration du projetClasse Rectangle2Modèle de prototype de classe
Le concept de prototypeLiaison avec __indexLe constructeur :new()Initialisation des attributsInstances indépendantesRécapitulatif - Usine de voitures5Surcharge d'opérateurs en POO
Additionner des objetsSoustraire des objetsConcaténer des objetsComparer des objets (<, >)Récapitulatif - Calculs de portefeuille8Encapsulation
Conventions de nommageClosures pour la confidentialitéAccès via les ClosuresTables en lecture seuleLogique de validationRécapitulatif - Coffre-fort sécurisé11Patrons de conception (Lite)
Fonctions FactoryTable SingletonPatron IteratorObserver (Écouteur)Récapitulatif - Logger Factory3État et comportement des objets
Variables d'instanceMéthodes GetterMéthodes SetterPropriétés calculéesFormatage de chaînesVérifications d'égalitéRécapitulatif - Note de l'étudiant6Bases de l'héritage
Mise en place de l'héritageHériter des méthodesÉtendre le constructeurAjouter des méthodes enfantsPartagé vs UniqueRécapitulatif - Hiérarchie des formes