08-02-2007, 04:00 PM
si toutes les classe qui ont : DisplayInfo() ont des similitudes... pourquoi ne pas créer un objet parent dont toutes ces classes hériteraient... tu déclares ces informations dans la classe mère, et tu mets le code dans les classes filles... petit exemple (non testé)
En même temps, ça donne du polymorphysme.
Donc, tu peux créer ceci :
Je repete: je n'ai pas testé, il y a certainement des fautes... c'est juste pour la réflexion
Code :
class forme{
function Display();
function Aire();
function Périmetre();
}
class carre:forme{ //note : j'ai "oublié" comment on fait le l'héritage en PHP
int $cote;
function Carre(int $p_cote){
$cote=$p_cote;
}
function Display(){
echo "__";
echo "|_|";
}
function Aire(){
echo $cote*$cote;
}
function Périmetre(){
echo cote*4;
}
}
class triangle:forme{
int $cote[3];
function triangle(int $p_cote1,int $p_cote2,int $p_cote3){
$cote[1]=$p_cote1;
$cote[2]=$p_cote2;
$cote[3]=$p_cote3;
}
function Display(){
echo " /\";
echo "/__\";
}
function Aire(){
echo $cote[1]*$hauteur/2; //note : c'est juste pour montrer ce que ça pourrait donner... meme si ici on ne connait pas la hauteur
}
function Périmetre(){
echo $cote[1]+$cote[2]+$cote[3];
}
}
class cercle:forme{
int $rayon;
function cercle(int $p_rayon){
$rayon=$p_rayon;
}
function Display(){
echo " _";
echo "(_)";
}
function Aire(){
echo $rayon*$rayon*pi();
}
function Périmetre(){
echo $rayon*2*pi();
}
}
En même temps, ça donne du polymorphysme.
Donc, tu peux créer ceci :
Code :
Forme $formes[3];
$formes[0]=new carre(5);
$formes[1]=new triangle(1,2,3);
$formes[2]=new cercle(5);
for($i=0;$i<3;$i++){
echo ($formes[$i].Display())." -> aire : ".(formes[$i].aire())." et perimetre : ".(formes[$i].perimetre());
}
Je repete: je n'ai pas testé, il y a certainement des fautes... c'est juste pour la réflexion
Je signale que je ne détiens pas la vérité unique et absolue, je peux me tromper. La critique peut aussi être constructive. Critiquez moi!
La quête d'Ewilan
http://easy2hack.ma-soiree.be
La quête d'Ewilan
http://easy2hack.ma-soiree.be