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
Pointpour 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éthodecalculerDistancepour calculer la distance entre deux points, et une méthode__toStringpour afficher les coordonnées d'un point sous la forme (x, y). - Dans le fichier "Polygone.php", écrivez une classe
Polygoneoù un polygone est un ensemble de points. Le constructeur prend en arguments les points qui composent le polygone.- Écrivez la méthode
nombreSommetspour calculer le nombre de sommets. - Ajoutez une méthode
__toStringpour 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
calculerLongueuretcalculerLargeurpour 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
Cercledéfinie par son centre (un point) et son rayon. Cette classe doit inclure les éléments suivants :- Un ou plusieurs constructeurs.
- Une méthode
calculerPerimetrepour calculer le périmètre du cercle. - Une méthode
calculerSurfacepour 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
__toStringpour 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 ?