Introduction à la POO
Notions théoriques
Nous avons vu que la Programmation Orientée Objet (POO) est une façon de programmer (un paradigme) qui nous permet d'organiser le code en objets.
Voyons maintenant comment construire et utiliser des objets en PHP.
Une classe
Définition : Une classe est un modèle (un plan) qui définit les propriétés (état) et les méthodes (comportement) d’un type d’objet. C’est une structure de données qui sert à créer des objets.
Explication :
Une classe est comme un moule à partir duquel on peut créer plusieurs objets. Elle définit les caractéristiques communes à tous les objets de ce type. En PHP, on utilise le mot-clé class pour déclarer une classe.
Exemple :
<?php
class Voiture {
// Propriétés (état de l'objet)
public $couleur;
public $marque;
// Méthodes (comportement)
public function klaxonner() {
print("Tut tut!");
}
}
?>
Une classe est comme un plan (un modèle) pour créer un objet.
Une classe peut contenir :
- des propriétés (variables) qui décrivent l'état de l'objet,
- et des méthodes (fonctions) qui décrivent le comportement de l'objet.
Lorsque l'on crée un objet à partir de cette classe (le modèle), on dit que l'on crée une instance de cette classe.
Un objet
Définition :
Un objet est une instance (une réalisation concrète) d’une classe. Il représente une entité qui possède un état (des propriétés) et un comportement (des méthodes).
Explication :
Dans la POO, l’objet est l’élément central. La classe est le « plan » (le modèle), l’objet est la « maison construite » à partir de ce plan.
Chaque objet est indépendant et peut interagir avec d’autres objets. En PHP, on accède à ses propriétés et méthodes via l’opérateur ->.
Exemple :
- En PHP, nous définissons une classe avec le mot-clé
class, suivi du nom de la classe. - Nous pouvons ensuite créer un objet (une instance de la classe) avec le mot-clé
new.
<?php
class Voiture {
// Propriétés (état de l'objet)
public $marque;
public $couleur;
// Méthode (comportement)
public function demarrer() {
echo $this->marque . " démarre !\n";
}
}
// Création d'un objet (instance)
$maVoiture = new Voiture();
$maVoiture->marque = "Peugeot";
$maVoiture->couleur = "Rouge";
$maVoiture->demarrer(); // Affiche : Peugeot démarre !
?>
Dans cet exemple,
Voitureest la classe (le modèle), et$maVoitureest un objet (une instance) de cette classe. L’objet$maVoiturea des propriétés (marqueetcouleur) et une méthode (demarrer()) qui lui permettent de représenter une voiture spécifique et de se comporter comme une voiture (en démarrant).
Héritage (Inheritance)
Définition :
L’héritage est un mécanisme qui permet à une classe enfant (ou dérivée) d’acquérir les propriétés et méthodes d’une classe parente (ou de base), en utilisant le mot-clé extends.
Explication :
L’héritage permet la réutilisation du code et modélise une relation « est-un » (is-a). PHP ne supporte que l’héritage simple (une seule classe parente). La classe enfant peut redéfinir (surcharger) les méthodes de la classe parente.
Exemple :
<?php
class Vehicule { // Classe parente
protected $vitesse = 0;
public function accelerer($kmh) {
$this->vitesse += $kmh;
echo "Vitesse : " . $this->vitesse . " km/h\n";
}
}
class Voiture extends Vehicule { // Classe enfant
public $nombrePortes = 5;
public function klaxonner() {
echo "Pouet pouet !\n";
}
}
$maVoiture = new Voiture();
$maVoiture->accelerer(50); // Hérité de Vehicule
$maVoiture->klaxonner(); // Propre à Voiture
?>
Exemple pratique
Voyons comment nous pouvons utiliser notre classe Voiture pour créer des objets et les utiliser.
-
Dans votre répertoire "Documents" créez le répertoire
tp_classe_voiture. -
Dans ce répertoire créez le fichier
main.php:<?php
// Utiliser la classe 'Voiture'
print("Utiliser la classe 'Voiture' \n\n"); -
Testez le fonctionnement de ce fichier :
php main.php -
Saisir le code de la classe 'Voiture' :
class Voiture {
// Propriétés
public $couleur;
public $marque;
// Méthodes
public function klaxonner() {
print("Tut tut!");
}
} -
Saisir le code pour utiliser la classe 'Voiture' :
// Création d'un objet
$maVoiture = new Voiture();
// Définition des propriétés
$maVoiture->couleur = "rouge";
$maVoiture->marque = "Ferrari";
// Utilisation d'une méthode
$maVoiture->klaxonner(); // Affiche "Tut tut!"