Programmation Objets en PHP

1.Généralités

a. Motivation
Terminologie
Classe : modèle d’objets composé de données (attributs, propriétés) et de fonctions (méthodes)
Objet : une instance de la classe (création d’objets à partir du moule qui peut donc en avoir plusieurs)
Chaque objet transporte avec lui ses données qui pourront être traitées par les fonctions (méthodes) de la classe de l’objet.
L’intérêt de l PO est présent quand :
– à une classe correspond plusieurs objets.
– Une « classification » d’objets existe.
– Un objet transporte un ensemble de données personnelles
– Un objet a un ensemble d’actions réservées(fonctions, méthodes)

b. Langages JavaScript et PHP
Le langage JavaScript utilise des objets dans un arbre complexe mais n’a pas la notion de classe (jusqu’à version 1.5 de Netscape). L’instruction NEW n’existe que pour les tableaux. Ce n’est donc pas réellement un langage Objet mais plutôt événementiel.
Nouveau en PHP4, la programmation orientée Objets (plutôt Classes/Objets) s’améliore grossièrement en PHP5. Il faudra cependant s’attendre à des changements des instructions dans les nouvelles versions.
Limites
– L’héritage est unique et pas multiple en PHP4 et 5.
– Constructeurs d’objets : nouveau en PHP5
– Destructeurs d’objets : à voir
– Classes abstraites et interfaces : nouveau en PHP5.
– variables PUBLIC, PRIVATE,… : tout est public en PHP4 ;
nouveau en PHP5.

2. Les classes

<?PHP
//============================= début de la class
CLASS voiture
{ //----attributs----------PUBLIC $marque=99 ;
PUBLIC $v ;
//PUBLIC $t ; // pas indispensable
//----Méthodes--------------FUNCTION klaxonner ()
{ echo "Elle klaxonne !"."<BR>" ;
}
FUNCTION avancer ($t)
{ $d=$this->v * $t ; // marche pas avec voiture
echo "Elle avance de ".$d." km <BR>" ;
}
} //============================= fin de la class
$mavoit= NEW voiture() ; // création de l'objet
echo "marque=".$mavoit->marque."<BR>" ; // $ // valeur de
l'initialisation
$mavoit->klaxonner () ;
$mavoit->v=100 ; //
echo "vitesse=".$mavoit->v."<BR>" ;
$mavoit->avancer (3) ;
$mavoit->t=5 ; //
echo "temps=".$mavoit->t."<BR>" ;
$mavoit->avancer ($mavoit->t) ;
//echo "distance=".$mavoit->d."<BR>" ; //inaccessible
?>

3. Héritage

///============================= début de la class GRAND-PARENT
CLASS transport
{ //----attributs----------
PUBLIC $v ;
FUNCTION bouger ($s)
{ echo "Le GRAND-PARENT bouge de ".$s." !<BR>" ;}
} //============================= fin de la class GRAND-PARENT
//============================= début de la class PARENT
CLASS vehicule EXTENDStransport
{ //----attributs----------
PUBLIC $marque=99 ;
PUBLIC $v ;
//PUBLIC $t ; // pas indispensable
FUNCTION avancer ($t)
{ $d=$this->v * $t ; // marche pas avec voiture
echo "Le PARENT avance de ".$d." km <BR>" ;
}
} //============================= fin de la class PARENT
//============================= début de la class ENFANT
CLASS voiture EXTENDSvehicule
{ //----attributs----------
//----Méthodes--------------
FUNCTION klaxonner ()
{ echo "Elle klaxonne !"."<BR>" ;
echo "-------Dans enfant<BR>" ;
parent::avancer (4) ;
vehicule::avancer (4) ;
transport::bouger (18) ;
echo "-------<BR>" ;
}
} //============================= fin de la class ENFANT
//=============principal==============================
$mavoit= NEW voiture() ; // création de l'objet
echo "marque=".$mavoit->marque."<BR>" ; // $
$mavoit->v=33 ; //
$mavoit->klaxonner () ;
$mavoit->v=100 ; //
echo "vitesse=".$mavoit->v."<BR>" ;
$mavoit->avancer (3) ;
$mavoit->t=5 ; //
echo "temps=".$mavoit->t."<BR>" ;
$mavoit->avancer ($mavoit->t) ;
//echo "distance=".$mavoit->d."<BR>" ; //inaccessible

4.Accès

a) Accès aux méthodes et attributs
Accès public : PUBLIC
La méthode ou l’attribut est accessible depuis toute l’application. C’est le cas par défaut. On peut le préciser explicitement avec le mot-clé PUBLIC.
Accès privé : PRIVATE
La méthode ou l’attribut n’est accessible qu’à l’intérieur de la classe. On le précise avec le mot-clé PRIVATE.
Accès protégé : PROTECTED
La méthode ou l’attribut n’est accessible qu’à l’intérieur de la classe et de ses classes dérivées. On le précise avec le mot-clé PROTECTED.

//============================= début de la class PARENT
CLASS vehicule
{ //----attributs----------
PUBLIC $marque=99 ;
PROTECTED $v=100 ;
//----Méthodes--------------
} //============================= fin de la class PARENT
//============================= début de la class ENFANT
CLASS voiture EXTENDS vehicule
{ //----attributs----------
PRIVATE $vv=30 ;
PUBLIC FUNCTION avancer ()
{ echo "avance à la vitesse de ENFANT de".$this->vv ."km/h"."<BR>"
; // OK car PRIVATE
echo "avance à la vitesse du PARENT de".$this->v ."km/h"."<BR>" ;
//OK car PROTECTED
}
} //============================= fin de la class ENFANT
$mavoit= NEW voiture() ; // création de l'objet
echo "marque=".$mavoit->marque."<BR>" ; // $
$mavoit->avancer () ; // OK
//echo "avance à la vitesse de".$mavoit->vv ."km/h"."<BR>" ;
//NON
//Fatal error: Cannot access private property voiture::$vv
//echo "avance à la vitesse du PARENT de".$mavoit->v
."km/h"."<BR>" ; //NON
//Fatal error: Cannot access protected property voiture::$v

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Programmation Objets en PHP (136 KO) (Cours PDF)
Programmation Objets en PHP

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *