Modèle objet de PHP (1)
Notes de cours
Travail personnel
Objectifs
On continue à manipuler PHP et on aborde les aspects objets.
Exercice 1 — PHP Objet : Géométrie : polygone, rectangle, triangle, ... #
Le but de ce TP est d'illustrer en PHP l'héritage à travers un exemple classique de géométrie : les polygones et leurs spécialisations en rectangles, en triangles, etc....
- Dans le fichier "Point.php", écrivez une classe
Point
pour représenter un point en 2 dimensions avec une couleur qui sera par défaut 'noir'. Cette classe devra contenir au moins le constructeur, une méthodecalculerDistance
pour calculer la distance entre deux points, et une méthode__toString
pour afficher les coordonnées d'un point sous la forme (x, y). - Dans le fichier "Polygone.php", écrivez une classe
Polygone
où un polygone est un ensemble de points. Le constructeur prend en arguments les points qui composent le polygone.- Écrivez la méthode
nombreSommets
pour calculer le nombre de sommets. - Ajoutez une méthode
__toString
pour l'affichage de la liste des sommets (les points). - Écrivez un fichier "TestPolygone.php" pour tester vos polygones et leurs méthodes.
Par exemple :
<?php // Assurez-vous que la classe Point et Polygone sont incluses require_once 'Point.php'; require_once 'Polygone.php'; // Exemple d'utilisation $pointA = new Point(10, 10, 'rouge'); $pointB = new Point(20, 20, 'bleu'); $pointC = new Point(10, 20, 'vert'); // Création d'une instance de Polygone $polygone = new Polygone([$pointA, $pointB, $pointC]); // Affichage des informations echo "Je suis un polygone avec les sommets : $polygone \n"; ?>
- Écrivez la méthode
- Dans le fichier "Rectangle.php", créez une classe
Rectangle
qui hérite des points. Le constructeur prend en argument deux points, correspondant aux coins supérieur gauche et inférieur droit. - Ajoutez les méthodes
calculerLongueur
etcalculerLargeur
pour calculer respectivement la longueur et la largeur du rectangle. - Vérifiez le calcul du périmètre du rectangle.
- Créez un script nommé "TestRectangle.php" qui instancie la classe Rectangle en fournissant deux points correspondant aux coins supérieur gauche et inférieur droit. Ensuite, affichez les informations du rectangle, notamment la longueur, la largeur et le périmètre :
- Dans le fichier "Cercle.php", écrivez une classe
Cercle
caractérisée par son centre (un point) et son rayon. Cette classe doit inclure le(s) constructeur(s), une méthodecalculerPerimetre
pour calculer le périmètre du cercle, ainsi qu'une méthodecalculerSurface
pour calculer sa surface.- À la création d'une instance de cercle, vérifiez que la valeur de son rayon est positive. Dans le cas contraire, le programme doit lever une exception et retourner un message d'erreur.
- Créez une méthode
afficherCercle
. - Le rayon d'un cercle est défini comme la distance entre les points du cercle et son centre. Un cercle est l'ensemble de points situés à même distance d'un point donné. Ce point est son centre, la distance est le rayon. On peut traduire ceci en disant qu'un cercle est l'ensemble des solutions d'une équation de la forme : `\sqrt{(x-a)^2 + (y-b)^2} = R`pour R un nombre réel positif (cercle de centre (a,b) et rayon R).
Écrivez un fichier "TestPoint.php" pour tester votre classe Point
et ses méthodes.
Par exemple :
<?php // Assurez-vous que la classe Point est incluse require_once 'Point.php'; // Créez une instance de la classe Point $pointA = new Point(10, 10, 'rouge'); // Affichez les coordonnées du point echo "Coordonnées du point A : $pointA \n"; // Créez un autre point $pointB = new Point(20, 20, 'bleu'); // Affichez les coordonnées du deuxième point echo "Coordonnées du point B : $pointB \n"; // Calculez la distance entre les deux points $distance = $pointA->calculerDistance($pointB); // Affichez la distance echo "Distance entre les points A et B : $distance"; ?>
<?php // TestRectangle.php // Assurez-vous que la classe Rectangle est incluse require_once 'Rectangle.php'; // Création d'une instance de Rectangle $coinSupGauche = new Point(2, 5, 'rouge'); $coinInfDroit = new Point(8, 2, 'bleu'); $rectangle = new Rectangle($coinSupGauche, $coinInfDroit); // Affichage des informations echo "Je suis un rectangle avec le coin supérieur gauche $coinSupGauche et le coin inférieur droit $coinInfDroit
"; echo "Ma longueur est : " . $rectangle->calculerLongueur() . "\n"; echo "Ma largeur est : " . $rectangle->calculerLargeur() . "\n"; echo "Et mon périmètre est : " . $rectangle->calculerPerimetre(); ?>