Programmation objet de base en PHP

Le but de ce tp est d'illustrer en PHP l'héritage sur un exemple classique de géometrie; les polygones et leurs specialisation en rectangles, en triangles etc....

Un polygones sera caracteriser par ses sommets qui sont des points.

Exercice 1

Ecrire dans un fichier Point.phpune classe pour representer des points en 2 dimensions. Elle comprendra au moins constructeurs ainsi qu'une méthode pour calculer la distance d'un point à un autre et une méthode toString pour pouvoir afficher les coordonnées d'un point sous la forme (x,y)

Exercice 2

Ecrire dans un fichier Polygone.php une classe polygone où un polygome est un ensemble (un tableau) de points. Elle aura au moins un constructeur prenant en arguments les points qui composent le polygone.

Exercice 3

La munir d'une méthode pour calculer le nombre de sommets ainsi que d'une méthode pour calculer le périmètre.

Exercice 4

Ajouter une méthode toString pour l'affichage d'un polgone par l'affichage de la liste des sommets (les points).

Exercice 5

Ecrire un fichier "testPolynome.php" pour tester vos polygones et leur methodes.

Par exemple

$P= new Polygone(new Point(1,1), new Point(2,2),new Point(1,2));
print("je suis un polygone de sommet(s)".$P);
print("et de perimetre ".$P->perimetre());
echo "
";
affichera:
je suis un polygone de sommet(s) , (1,1) , (2,2) , (1,2)
et de perimetre 3.41421356237

Exercice 6

Ecrire dans un fichier Rectangle.php une classe rectangle qui spécialise les polygones. Le constructeurs prend deux points en argument correspondants aux coins supérieur gauche et inférieur droit)

Exercice 7

Ajouter des méthodes pour calculer la longueur et la largeur.

Exercice 8

Testez les ! puis remarquez que pour un rectangle, il existe une façon plus rapide de calculer le périmètre donc redéfinissez la méthode périmètre.

Exercice 9

Ecrire une classe triangle qui hérite de polygone.

Exercice 10

Trouvez des opérations spécifiques aux triangles et implémentez-les. testez le tout !

N'oublier pas d'utiliser l'autoloading dans le fichier de test.


Last modified: Sun Apr 28 20:08:14 CEST 2013