Configuration du projet
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 55 sur 70.
Défi
FacileConstruisons les bases d'un système de gestion de formes (Shape Manager) ! Ce projet évoluera au cours des prochaines leçons, nous allons donc commencer par mettre en place une structure de fichiers propre avec une classe de base Shape.
Vous allez créer deux fichiers pour organiser votre code :
Shape.lua: Définissez une classe de baseShapeen utilisant le modèle de prototype. Chaque forme possède un attributname(comme "Circle" ou "Rectangle"). Incluez un constructeur:new(name)qui accepte le nom de la forme, et une méthode:getName()qui le retourne.main.lua: Donnez vie à votre classe Shape en important le module et en créant une instance de forme. Lisez un nom de forme depuis l'entrée standard, créez une Shape avec ce nom, et affichez le résultat de l'appel à:getName().
Cette classe de base servira de parent pour des formes spécifiques comme Rectangle et Circle dans les prochaines leçons. Pour l'instant, concentrez-vous sur la mise en place correcte de la structure de la classe — la configuration de __index, le modèle de constructeur et la méthode getter.
Entrée : Une seule ligne contenant le nom de la forme (une chaîne de caractères).
Sortie : Le nom de la forme retourné par :getName().
Essayez vous-même
-- Inclure le module Shape
local Shape = require('Shape')
-- Lire le nom de la forme depuis l'entrée
local shapeName = io.read()
-- TODO: Créer une nouvelle instance de Shape avec le nom donné
-- TODO: Afficher le résultat de l'appel de :getName() sur votre forme
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