L'héritage
Partie théorique
En programmation orientée objet, l'héritage est un mécanisme qui permet à une classe d'hériter des propriétés et des méthodes d'une autre classe.
- La classe qui hérite est appelée "classe enfant" ou "classe dérivée",
- et la classe dont elle hérite est appelée "classe parente" ou "classe de base".
L'héritage est utile pour créer des classes spécialisées qui reprennent les caractéristiques d'une classe plus générale tout en ajoutant ou en modifiant certaines d'entre elles. Cela permet de réduire la redondance du code et de faciliter la maintenance et l'évolution du programme.
Comment permettre à une classe d'hériter des propriétés et des méthodes d'une autre classe ?En PHP :
- l'héritage est réalisé en utilisant le mot-clé
extends
- Une classe ne peut hériter que d'une seule classe parente.
L'héritage est un concept fondamental en programmation orientée objet (POO).
Exemple pratique
class Vehicule {
protected $vitesseMax;
public function getVitesseMax() {
return $this->vitesseMax;
}
public function setVitesseMax($v) {
$this->vitesseMax = $v;
}
}
class Voiture extends Vehicule {
private $nombreDePortes;
public function getNombreDePortes() {
return $this->nombreDePortes;
}
public function setNombreDePortes($n) {
$this->nombreDePortes = $n;
}
}
$voiture = new Voiture();
$voiture->setNombreDePortes(4);
print($voiture->getNombreDePortes()); // Affiche 4
$voiture->setVitesseMax(135);
print($voiture->getVitesseMax()); // Affiche 135
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Nous allons maintenant étendre notre jeu en utilisant l'héritage pour créer deux types spécifiques de personnages : un
Guerrier
et unMagicien
.
Ces deux types de personnages hériteront de la classe Personnage
et auront des propriétés et des méthodes supplémentaires.
Voici les étapes à suivre :
-
Dans le répertoire
classes
du répertoirejeu_combat
(de la séance précédente) :- Créez une classe
Guerrier
qui hérite de la classePersonnage
. - Ajoutez une propriété privée
$force
pour représenter la force du guerrier.
- Créez une classe
-
Ajoutez un accesseur (getter) et un mutateur (setter) pour la propriété
$force
.Assurez-vous d'ajouter des vérifications pour garantir que la force est un nombre positif.
-
Ajoutez une méthode
attaquer
qui affiche un message indiquant que le guerrier attaque et indiquant sa force. -
Créez une classe
Magicien
qui hérite également de la classePersonnage
.Ajoutez une propriété privée
$magie
pour représenter le niveau de magie du magicien. -
Ajoutez un accesseur (getter) et un mutateur (setter) pour la propriété
$magie
.Assurez-vous d'ajouter des vérifications pour garantir que le niveau de magie est un nombre positif.
-
Ajoutez une méthode
lancerSort
qui affiche un message indiquant que le magicien lance un sort et indiquant son niveau de magie. -
Créez une instance de chaque classe et testez toutes les méthodes :
$guerrier = new Guerrier();
$guerrier->setNom("Arthur");
$guerrier->setPointsDeVie(100);
$guerrier->setExperience(0);
$guerrier->setForce(50);
$guerrier->attaquer(); // Affiche "Arthur attaque avec une force de 50 points."
$magicien = new Magicien();
$magicien->setNom("Merlin");
$magicien->setPointsDeVie(80);
$magicien->setExperience(0);
$magicien->setMagie(100);
$magicien->lancerSort(); // Affiche "Merlin lance un sort avec un niveau de magie de 100 points."
Une solution
Vous devez être connecté pour voir le contenu.