Classe Cercle
Fait partie de la section Programmation orientée objet du Journey Lua de Coddy. Leçon 57 sur 70.
Défi
FacileContinuons à construire notre gestionnaire de formes en ajoutant une classe Circle à côté du Rectangle que vous avez créé dans la leçon précédente.
Vous travaillerez avec quatre fichiers pour organiser vos formes :
Shape.lua: votre classe Shape de base avec:new(name)et:getName().Rectangle.lua: votre classe Rectangle du défi précédent avec:getArea().Circle.lua: créez une classe Circle qui hérite de Shape. Le constructeur doit accepter unradius, appeler le constructeur parent avec le nom"Circle"et stocker le rayon. Ajoutez une méthode:getArea()qui calcule l’aire du cercle à l’aide de la formule πr². Utilisezmath.pipour la valeur de π.main.lua: requirez vos modules Rectangle et Circle. Lisez trois valeurs saisies : la largeur d’un rectangle, la hauteur d’un rectangle et le rayon d’un cercle. Créez une instance de chaque forme et affichez quatre lignes : le nom du rectangle, l’aire du rectangle, le nom du cercle et l’aire du cercle.
Les deux formes partagent désormais la même interface grâce à l’héritage : chacune possède une méthode :getName() provenant de Shape et sa propre implémentation de :getArea(). Cette interface commune deviendra utile dans les prochaines leçons.
Entrée : trois lignes : largeur (nombre), hauteur (nombre) et rayon (nombre).
Sortie : quatre lignes : nom du rectangle, aire du rectangle, nom du cercle, aire du cercle.
Essayez vous-même
-- Charger le module Rectangle
local Rectangle = require('Rectangle')
-- Charger le module Circle
-- TODO: Charger le module Circle ici
-- Lire la largeur et la hauteur depuis l'entrée
local width = tonumber(io.read())
local height = tonumber(io.read())
-- TODO: Lire le rayon depuis l'entrée
-- Créer une nouvelle instance de Rectangle avec les dimensions données
local rect = Rectangle:new(width, height)
-- TODO: Créer une nouvelle instance de Circle avec le rayon donné
-- Afficher le nom et l'aire du rectangle
print(rect:getName())
print(rect:getArea())
-- TODO: Afficher le nom et l'aire du cercle
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