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 utilise deux points pour définir ses coins. Le constructeur doit prendre en argument deux objets Point, représentant respectivement le coin supérieur gauche et le coin inférieur droit du rectangle.
- 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
définie par son centre (un point) et son rayon. Cette classe doit inclure les éléments suivants :- Un ou plusieurs constructeurs.
- Une méthode
calculerPerimetre
pour calculer le périmètre du cercle. - Une méthode
calculerSurface
pour calculer la surface du cercle. -
Lors de la création d'une instance de la classe
Cercle
, vérifiez que la valeur du rayon est positive. Si ce n’est pas le cas, le programme doit lever une exception et retourner un message d'erreur approprié. -
Ajoutez une méthode
__toString
pour afficher les caractéristiques d’un cercle de manière lisible.
É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(); ?>
-
Rappel sur les notions liées au cercle : plusieurs approches permettent de définir ou de construire un cercle :
- À partir d’un point et d’un rayon : Le cercle est défini comme l’ensemble des points situés à une distance fixe (le rayon) d’un point donné (le centre).
- Avec un diamètre : deux points. Le cercle peut être défini par son diamètre. Il correspond à l’ensemble des points équidistants des deux extrémités du diamètre.
- Bonus : À partir de plusieurs points qui constituent le contour ?