Récapitulatif - Calculateur de formes
Fait partie de la section Programmation Orientée Objet du Journey PHP de Coddy. Leçon 32 sur 91.
Défi
FacileConstruisons un calculateur de formes qui démontre la puissance des interfaces pour créer du code flexible et extensible. Tu vas créer une interface qui définit un contrat pour calculer des aires, puis l'implémenter dans différentes classes de formes.
Tu organiseras ton code sur quatre fichiers :
Calculable.php: définis une interfaceCalculableavec une seule signature de méthode :calculateArea(). Ce contrat garantit que toute forme dont l'aire peut être calculée est capable de calculer son aire.Rectangle.php: crée une classeRectanglequi implémenteCalculable. Inclus le fichier de l'interface. La classe doit avoir les propriétés privées$widthet$height, définies par le constructeur. ImplémentecalculateArea()pour retourner l'aire (la largeur multipliée par la hauteur).Circle.php: crée une classeCirclequi implémente égalementCalculable. Inclus le fichier de l'interface. La classe doit avoir une propriété privée$radius, définie par le constructeur. ImplémentecalculateArea()pour retourner l'aire en utilisant la formulepi() * radius * radius.main.php: inclus les deux fichiers de formes. Crée une fonction appeléedisplayAreaqui accepte un paramètreCalculableet un nom de forme (chaîne de caractères). La fonction doit afficher :"[name] area: [area]", où l'aire est arrondie à 2 décimales à l'aide denumber_format().
Tu recevras quatre entrées : la largeur du rectangle, la hauteur du rectangle, le rayon du cercle et un nom de forme pour le cercle. Crée un Rectangle avec la largeur et la hauteur (converties en nombres flottants), ainsi qu'un Circle avec le rayon (converti en nombre flottant). Appelle displayArea() deux fois : d'abord avec le rectangle en utilisant "Rectangle" comme nom, puis avec le cercle en utilisant le nom de forme fourni. Affiche chaque résultat sur sa propre ligne.
La fonction displayArea() fonctionne avec toute forme qui implémente Calculable. Elle n'a pas besoin de savoir si elle calcule l'aire d'un rectangle, d'un cercle ou de toute forme future que tu pourrais ajouter. C'est tout l'intérêt de programmer à l'aide d'une interface !
Essayez vous-même
<?php
// Inclure les fichiers de formes
require_once 'Rectangle.php';
require_once 'Circle.php';
// TODO: Créer une fonction appelée displayArea
// Elle doit accepter un paramètre Calculable et un nom de forme (string)
// Afficher : "[name] area: [area]" où area est arrondi à 2 décimales en utilisant number_format()
// Lire les entrées
$width = floatval(trim(fgets(STDIN)));
$height = floatval(trim(fgets(STDIN)));
$radius = floatval(trim(fgets(STDIN)));
$circleName = trim(fgets(STDIN));
// TODO: Créer un Rectangle avec le width et le height
// TODO: Créer un Circle avec le radius
// TODO: Appeler displayArea() avec le rectangle en utilisant "Rectangle" comme nom
// TODO: Appeler displayArea() avec le circle en utilisant le nom de forme fourni
?>Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesIntroduction à la POOClasses et objetsLe mot-clé $thisMéthodesPropriétésConstructeur (__construct)Destructeur (__destruct)Récapitulatif - Calculatrice simple4Héritage
Héritage de baseLe mot-clé parent::Redéfinition des méthodesLe mot-clé finalClasses abstraitesRécapitulatif – Hiérarchie des employés7Encapsulation
Public, Protected, PrivateModificateurs d’accès en profondeurAccesseurs et mutateursDissimulation de l’informationPromotion des constructeurs (8.0)Récapitulatif – Système de fiches étudiant10Concepts avancés de la POO
Composition ou héritageInjection de dépendancesClasses anonymesÉnumérations (PHP 8.1)Fibres (PHP 8.1)Approfondissement du clonage d’objetsGénérateurs et itérateurs13Patrons de conception – Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode modèlePatron ÉtatPatron CompositePatron Dépôt2Espaces de noms et chargement automatique
Introduction aux espaces de nomsLe mot-clé useNorme de chargement automatique PSR-4Autoloader de ComposerRécapitulatif - Projet organisé5Interfaces et contrats
Introduction aux interfacesImplémentation des interfacesImplémentation de plusieurs interfacesInterface ou classe abstraiteIndication de type avec les interfacesRécapitulatif - Calculateur de formes8Méthodes magiques
Introduction aux méthodes magiques__toString et __debugInfo__get, __set, __isset, __unset__call et __callStatic__clone et clonage d’objets__serialize et __unserializeRécapitulatif - Collection personnalisée3Propriétés de classe
Propriétés d’instance vs statiquesConstantes dans les classesMéthodes et propriétés statiquesPropriétés privées et protégéesPropriétés en lecture seule (PHP 8.1)Récapitulatif - Gestionnaire de comptes bancaires6Polymorphisme
Révision de la redéfinition des méthodesPolymorphisme via les interfacesAnnotations de type et types unionLiaison statique tardiveRécapitulatif - Processeur de paiements9Traits
Introduction aux traitsUtilisation de plusieurs traitsRésolution des conflits entre traitsMéthodes abstraites dans les traitsTraits par rapport à l’héritage12Patrons de conception – Partie 1
Introduction aux patrons de conceptionPatron SingletonPatron FactoryPatron ObserverPatron StrategyEntraînez-vous par vous-même : Compilateur PHP en ligne