Classe Rectangle
Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 56 sur 70.
Défi
FacileDéveloppons maintenant notre gestionnaire de formes en créant une classe Rectangle qui hérite de la classe de base Shape que tu as construite dans la leçon précédente.
Tu travailleras avec trois fichiers pour garder ton code organisé :
Shape.lua: ta classe de base Shape du défi précédent (avec:new(name)et:getName()).Rectangle.lua: crée une classe Rectangle qui hérite de Shape. Le constructeur doit accepterwidthetheight, appeler le constructeur parent avec le nom"Rectangle"et enregistrer les dimensions. Ajoute une méthode:getArea()qui calcule et renvoie l’aire du rectangle.main.lua: importe ton module Rectangle, lis la largeur et la hauteur saisies, crée une instance de Rectangle et affiche son nom, puis son aire sur des lignes distinctes.
N’oublie pas de configurer correctement le lien d’héritage afin que les instances de Rectangle puissent accéder aux méthodes de Shape via la chaîne des prototypes.
Entrée : Deux lignes : la première contient la largeur (nombre), la seconde contient la hauteur (nombre).
Sortie : Deux lignes : le nom du rectangle obtenu avec :getName(), puis son aire obtenue avec :getArea().
Essayez vous-même
-- Charger le module Rectangle
local Rectangle = require('Rectangle')
-- Lire la largeur et la hauteur depuis l'entrée
local width = tonumber(io.read())
local height = tonumber(io.read())
-- Créer une nouvelle instance de Rectangle avec les dimensions données
local rect = Rectangle:new(width, height)
-- Afficher le nom et l'aire du rectangle
print(rect:getName())
print(rect:getArea())
Toutes les leçons de Programmation orientée objet
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 RectangleClasse CercleMéthode PérimètreCollection de formesAire totaleFiltrer les formes2Modè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 formesEntraînez-vous par vous-même : Compilateur Lua en ligne