Récapitulatif - Usine de voitures
Fait partie de la section Object Oriented Programming du Journey Lua de Coddy — leçon 11 sur 70.
Défi
FacileConstruisons une classe Car complète qui rassemble tout ce que vous avez appris dans ce chapitre ! Vous allez créer un système de fabrication de voitures où chaque voiture possède son propre modèle et sa propre couleur, démontrant ainsi une organisation de module appropriée et des instances indépendantes.
Vous organiserez votre code sur deux fichiers :
Car.lua: Définissez votre classeCaren suivant le modèle de prototype standard. Votre classe a besoin d'un constructeur:new(model, color)qui crée des voitures avec leurs propres attributs. Incluez une méthode:describe()qui permet à chaque voiture de se présenter.main.lua: Importez votre module Car et créez plusieurs instances de voiture pour démontrer que chaque voiture conserve son propre état indépendant.
Votre méthode :describe() doit imprimer exactement dans ce format :
A [color] [model]Vous recevrez quatre entrées :
- Le modèle pour la première voiture
- La couleur pour la première voiture
- Le modèle pour la deuxième voiture
- La couleur pour la deuxième voiture
Dans votre fichier principal, créez deux voitures en utilisant les entrées fournies et faites en sorte que chacune se décrive sur une ligne séparée.
Par exemple, si les entrées sont Sedan, blue, Truck, et red, la sortie devrait être :
A blue Sedan
A red TruckChaque voiture doit stocker son propre modèle et sa propre couleur, prouvant que votre classe crée des instances véritablement indépendantes.
Essayez vous-même
-- Charger le module Car
local Car = require('Car')
-- Lire les entrées
local model1 = io.read()
local color1 = io.read()
local model2 = io.read()
local color2 = io.read()
-- TODO : Créer deux instances de voiture en utilisant Car:new()
-- TODO : Appeler :describe() sur chaque voiture pour afficher leurs descriptions
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