Classe Rectangle
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 56 sur 70.
Défi
FacileMaintenant, élargissons notre gestionnaire de formes en créant une classe Rectangle qui hérite de la classe de base Shape que vous avez construite dans la leçon précédente.
Vous travaillerez avec trois fichiers pour garder votre code organisé :
Shape.lua: Votre classe de base Shape du défi précédent (avec:new(name)et:getName()).Rectangle.lua: Créez une classe Rectangle qui hérite de Shape. Le constructeur doit accepterwidthetheight, appeler le constructeur parent avec le nom"Rectangle", et stocker les dimensions. Ajoutez une méthode:getArea()qui calcule et retourne l'aire du rectangle.main.lua: Importez votre module Rectangle, lisez la largeur (width) et la hauteur (height) depuis l'entrée, créez une instance de Rectangle, et affichez son nom suivi de son aire sur des lignes séparées.
N'oubliez 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 de prototypes.
Entrée : Deux lignes — la première contenant la largeur (nombre), la seconde contenant la hauteur (nombre).
Sortie : Deux lignes — le nom du rectangle provenant de :getName(), puis son aire provenant de :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 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