Exercices corrigés PHP – Programmation Orientée Objet | Partie 2
Avec des exercices corrigés en PHP, vous pratiquerez divers concepts du langage de programmation PHP. Vous commencerez par des exercices PHP de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Exercice 1:
Écrivez un programme PHP pour créer une classe appelée « FeuDeCirculation » avec des attributs pour la couleur et la durée, et des méthodes pour changer la couleur et vérifier si le feu est rouge ou vert.
Diagrame de classe:

<?php
// Définir la classe FeuDeCirculation
class FeuDeCirculation {
// Déclarer une variable privée pour stocker la couleur du feu de
// circulation
private $couleur;
// Déclarer une variable privée pour stocker la durée du feu en
// secondes
private $duree;
// Constructeur pour la classe FeuDeCirculation
public function __construct($couleur, $duree) {
// Initialiser la couleur du feu de circulation
$this->couleur = $couleur;
// Initialiser la durée du feu de circulation
$this->duree = $duree;
}
// Méthode pour changer la couleur du feu de circulation
public function changerCouleur($newColor) {
// Mettre à jour la variable couleur avec la nouvelle couleur
$this->couleur = $newColor;
}
// Méthode pour vérifier si le feu est rouge
public function estRouge() {
// Retourne true si la couleur est rouge, sinon retourne
// false
return $this->couleur === "Rouge";
}
// Méthode pour vérifier si le feu est vert
public function estVert() {
// Retourne true si la couleur est verte, sinon retourne
// false
return $this->couleur === "Vert";
}
// Méthode pour obtenir la durée du feu de circulation
public function getDuree() {
// Renvoyer la valeur de la durée
return $this->duree;
}
// Méthode pour définir la durée du feu de circulation
public function setDuree($duree) {
// Mettre à jour la variable durée avec la nouvelle valeur
$this->duree = $duree;
}
}
// Créer un nouvel objet FeuDeCirculation avec une couleur initiale 'Rouge' et une durée de 30 secondes
$fc = new FeuDeCirculation("Rouge", 30);
// Afficher si le feu est rouge
echo "Le feu est rouge: " . ($fc->estRouge() ? "Oui" : "Non") . "\n";
// Afficher si le feu est vert
echo "Le feu est vert: " . ($fc->estVert() ? "Oui" : "Non") . "\n";
// Changer la couleur du feu de circulation en 'Vert'
$fc->changerCouleur("Vert");
// Afficher si le feu de circulation est maintenant vert
echo "Le feu de circulation est maintenant vert: " . ($fc->estVert() ? "Oui" : "Non") . "\n";
// Afficher la durée du feu de circulation
echo "La durée du feu est: " . $fc->getDuree() . " secondes\n";
// Définir une nouvelle durée pour le feu de circulation à 15 secondes
$fc->setDuree(15);
// Afficher la durée actualisée du feu de circulation
echo "La durée du feu est maintenant: " . $fc->getDuree() . " secondes\n";
?>
Sortie:
Le feu est rouge: true Le feu est vert: false Le feu de circulation est maintenant vert: true La durée du feu est: 30 La durée du feu est maintenant: 15
Exercice 2:
Écrire un programme PHP pour créer une classe appelée « Employee » avec un nom, un salaire, une date d’embauche et une méthode pour calculer les années de service.
Diagrame de classe:

<?php
// Définir la classe Employee
class Employee {
// Déclarer une variable privée pour stocker le nom de l'employé
private $nom;
// Déclarer une variable privée pour stocker le salaire de
// l'employé
private $salaire;
// Déclarer une variable privée pour stocker la date d'embauche
// de l'employé
private $datEmbauche;
// Constructeur pour la classe Employee
public function __construct($nom, $salaire, $datEmbauche) {
// Initialiser le nom de l'employé
$this->nom = $nom;
// Initialiser le salaire de l'employé
$this->salaire = $salaire;
// Initialiser la date d'embauche de l'employé (convertir en
// DateTime)
$this->datEmbauche = new DateTime($datEmbauche);
}
// Méthode pour récupérer le nom de l'employé
public function getNom() {
// Renvoyer le nom de l'employé
return $this->nom;
}
// Méthode pour définir le nom de l'employé
public function setNom($nom) {
// Mettre à jour la variable nom avec la nouvelle valeur
$this->nom = $nom;
}
// Méthode pour récupérer le salaire de l'employé
public function getSalaire() {
// Renvoyer le salaire de l'employé
return $this->salaire;
}
// Méthode pour définir le salaire de l'employé
public function setSalaire($salaire) {
// Mettre à jour la variable salaire avec la nouvelle valeur
$this->salaire = $salaire;
}
// Méthode pour récupérer la date d'embauche de l'employé
public function getDatEmbauche() {
// Renvoyer la date d'embauche de l'employé
return $this->datEmbauche->format('Y-m-d');
}
// Méthode pour définir la date d'embauche de l'employé
public function setDatEmbauche($datEmbauche) {
// Mettre à jour la variable datEmbauche avec la nouvelle
// valeur
$this->datEmbauche = new DateTime($datEmbauche);
}
// Méthode de calcul des années de service de l'employé
public function calculerAnneeService() {
// Calculer la période entre la date d'embauche et la date du
// jour
$aujourdHui = new DateTime();
$interval = $this->datEmbauche->diff($aujourdHui);
// Renvoyer le nombre d'années
return $interval->y;
}
// Méthode pour afficher les détails de l'employé
public function afficherEmployee() {
// Afficher les détails de l'employé
echo "\nNom: " . $this->nom . "\n";
echo "Salaire: " . $this->salaire . "\n";
echo "Date d'embauche: " . $this->datEmbauche->format('Y-m-d') . "\n";
}
}
// Créer un nouvel objet Employee nommé emp1
$emp1 = new Employee("Alex Babtise", 80000, "2024-05-01");
// Créer un nouvel objet Employee nommé emp2
$emp2 = new Employee("Bob Kimo", 40000, "2022-03-01");
// Afficher les détails de l'employé 1
$emp1->afficherEmployee();
// Afficher les années de service de l'employé 1
echo "Années de service: " . $emp1->calculerAnneeService() . "\n";
// Afficher les détails de l'employé 2
$emp2->afficherEmployee();
// Afficher les années de service de l'employé 2
echo "Années de service: " . $emp2->calculerAnneeService() . "\n";
?>
Sortie:
Nom: Alex Babtise Salaire: 80000.0 Date d'embauche: 2024-05-01 Années de service: 0 Nom: Bob Kimo Salaire: 40000.0 Date d'embauche: 2022-03-01 Années de service: 2
Exercice 3:
Écrire un programme PHP pour créer une classe appelée « Etudiant » avec un nom, une note et des cours, ainsi que des méthodes pour ajouter et supprimer des cours.
Diagrame de classe:

<?php
// Définir la classe Etudiant
class Etudiant {
// Déclarer une variable privée pour stocker le nom de l'étudiant
private $nom;
// Déclarer une variable privée pour stocker la note de l'étud.
private $note;
// Déclarer un tableau privé pour stocker les cours de l'étudiant
private $cours;
// Constructeur pour la classe Etudiant
public function __construct($nom, $note) {
// Initialiser le nom de l'étudiant
$this->nom = $nom;
// Initialiser la note de l'étudiant
$this->note = $note;
// Initialiser le tableau de cours
$this->cours = [];
}
// Méthode pour récupérer le nom de l'étudiant
public function getNom() {
return $this->nom;
}
// Méthode pour récupérer la note de l'étudiant
public function getNote() {
return $this->note;
}
// Méthode pour récupérer la liste de cours de l'étudiant
public function getCours() {
return $this->cours;
}
// Méthode pour ajouter un cours à la liste des cours de l'étud.
public function ajouterCours($c) {
// Ajouter le cours à la liste
$this->cours[] = $c;
}
// Méthode pour supprimer un cours de la liste des cours de étud.
public function supprimerCours($c) {
// Chercher l'index du cours à supprimer
$index = array_search($c, $this->cours);
if ($index !== false) {
// Supprimer le cours si trouvé
unset($this->cours[$index]);
// Réindexer le tableau après suppression
$this->cours = array_values($this->cours);
}
}
// Méthode pour afficher les détails de l'étudiant
public function afficherEtudiant() {
echo "Nom: " . $this->nom . "\n";
echo "Note: " . $this->note . "\n";
}
}
// Créer un nouvel objet Etudiant nommé e1
$e1 = new Etudiant("Alex Babtise", 18);
// Créer un nouvel objet Etudiant nommé e2
$e2 = new Etudiant("Bob Kimo", 16);
// Afficher les détails des étudiants
echo "Détails de l'étudiant:\n";
$e1->afficherEtudiant();
$e2->afficherEtudiant();
// Ajouter des cours pour l'étudiant 1
echo "Ajouter des cours pour " . $e1->getNom() . "\n";
$e1->ajouterCours("Mathématiques");
$e1->ajouterCours("Biologie");
$e1->ajouterCours("Histoire");
// Afficher les cours de l'étudiant 1
echo "Les cours de " . $e1->getNom() . " : " . implode(", ", $e1->getCours()) . "\n";
// Ajouter des cours pour l'étudiant 2
echo "\nAjouter des cours pour " . $e2->getNom() . "\n";
$e2->ajouterCours("Anglais");
$e2->ajouterCours("Géologie");
$e2->ajouterCours("Physique");
// Afficher les cours de l'étudiant 2
echo "Les cours de " . $e2->getNom() . " : " . implode(", ", $e2->getCours()) . "\n";
// Supprimer le cours 'Biologie' pour l'étudiant 1
echo "\nSuppression du cours 'Biologie' pour " . $e1->getNom() . "\n";
$e1->supprimerCours("Biologie");
// Afficher les cours mis à jour de l'étudiant 1
echo "Les cours de " . $e1->getNom() . " : " . implode(", ", $e1->getCours()) . "\n";
?>
Sortie:
Détails de l'étudiant: Nom: Alex Babtise Note: 18 Nom: Bob Kimo Note: 16 Ajouter des cours pour Alex Babtise Les cours de Alex Babtise : [Mathématiques, Biologie, Histoire] Ajouter des cours pour Bob Kimo Les cours de Bob Kimo : [Anglais, Géologie, Physique] Suppression du cours 'Biologie' pour Alex Babtise Les cours de Alex Babtise : [Mathématiques, Histoire]
Exercice 4:
Écrire un programme PHP pour créer une classe appelée « Bibliotheque » avec une collection de livres et des méthodes pour ajouter et supprimer des livres.
Diagrame de classe:

<?php
// Définir la classe Livre
class Livre {
// Attribut privé pour stocker le titre du livre
private $titre;
// Attribut privé pour stocker l'auteur du livre
private $auteur;
// Constructeur pour initialiser les champs titre et auteur
public function __construct($titre, $auteur) {
$this->titre = $titre;
$this->auteur = $auteur;
}
// Méthode pour récupérer le titre
public function getTitre() {
return $this->titre;
}
// Méthode Setter pour le titre
public function setTitre($titre) {
$this->titre = $titre;
}
// Méthode pour récupérer l'auteur
public function getAuteur() {
return $this->auteur;
}
// Méthode Setter pour l'auteur
public function setAuteur($auteur) {
$this->auteur = $auteur;
}
}
// Définir la classe Bibliotheque
class Bibliotheque {
// Attribut privé pour stocker une liste d'objets Livres
private $livres;
// Constructeur pour initialiser la variable livres
public function __construct() {
$this->livres = [];
}
// Méthode pour ajouter un livre à la liste des livres
public function addLivre($livre) {
$this->livres[] = $livre;
}
// Méthode pour supprimer un livre de la liste des livres
public function removeLivre($livre) {
foreach ($this->livres as $key => $l) {
if ($l->getTitre() == $livre->getTitre() && $l->getAuteur() == $livre->getAuteur()) {
unset($this->livres[$key]);
// Réindexer la liste après suppression
$this->livres = array_values($this->livres);
break;
}
}
}
// Méthode pour récupérer la liste des livres
public function getLivres() {
return $this->livres;
}
}
// Créer une nouvelle instance de la classe Bibliotheque
$biblio = new Bibliotheque();
// Créer de nouveaux objets Livre avec le titre et l'auteur
$livre1 = new Livre("Les Misérables", "Victor Hugo");
$livre2 = new Livre("Nana", "Émile Zola");
$livre3 = new Livre("Les fleurs du mal", "Baudelaire");
$livre4 = new Livre("Le Cid", "Corneille");
// Ajouter les livres à la biblio
$biblio->addLivre($livre1);
$biblio->addLivre($livre2);
$biblio->addLivre($livre3);
$biblio->addLivre($livre4);
echo "Livres dans la bibliothéque:\n";
// Parcourir la liste des livres de la biblio
foreach ($biblio->getLivres() as $livre) {
// Afficher le titre et l'auteur de chaque livre
echo $livre->getTitre() . " par " . $livre->getAuteur() . "\n";
}
// Supprimer un livre de la biblio
$biblio->removeLivre($livre2);
echo "\nLivres dans la biblio après suppression de '" . $livre2->getTitre() . "':\n";
// Parcourir la liste mise à jour des livres dans la biblio
foreach ($biblio->getLivres() as $livre) {
// Afficher le titre et l'auteur de chaque livre
echo $livre->getTitre() . " par " . $livre->getAuteur() . "\n";
}
?>
Sortie:
Livres dans la bibliothéque: Les Misérables par Victor Hugo Nana par Émile Zola Les fleurs du mal par Baudelaire Le Cid par Corneille Livres dans la biblio après suppression Nana: Les Misérables par Victor Hugo Les fleurs du mal par Baudelaire Le Cid par Corneille
Exercice 5:
Écrire un programme PHP pour créer une classe appelée « Avion » avec un numéro de vol, une destination et des attributs d’heure de départ, ainsi que des méthodes pour vérifier l’état et le retard du vol.
Diagrame de classe:

<?php
// Définir la classe Avion
class Avion {
// Attribut privé pour stocker le numéro de vol
private $numVol;
// Attribut privé pour stocker la destination
private $destination;
// Attribut privé pour stocker l'heure de départ prévue
private $heureDepart;
// Attribut privé pour stocker le temps de retard en minutes
private $tempsRetard;
// Constructeur pour initialiser le numéro de vol, la destination
// et l'heure de départ
public function __construct($numVol, $destination, $heureDepart) {
$this->numVol = $numVol;
$this->destination = $destination;
$this->heureDepart = new DateTime($heureDepart);
$this->tempsRetard = 0;
}
// Méthode pour obtenir le numéro de vol
public function getNumVol() {
return $this->numVol;
}
// Méthode pour définir le numéro de vol
public function setNumVol($numVol) {
$this->numVol = $numVol;
}
// Méthode pour obtenir la destination
public function getDestination() {
return $this->destination;
}
// Méthode pour définir la destination
public function setDestination($destination) {
$this->destination = $destination;
}
// Méthode pour obtenir l'heure de départ
public function getHeureDepart() {
return $this->heureDepart->format('H:i');
}
// Méthode pour définir l'heure de départ
public function setHeureDepart($heureDepart) {
$this->heureDepart = new DateTime($heureDepart);
}
// Méthode pour obtenir le temps de retard
public function getTempsRetard() {
return $this->tempsRetard;
}
// Méthode pour fixer un délai et mettre à jour l'heure de départ
public function retarder($minutes) {
$this->tempsRetard = $minutes;
$this->heureDepart->modify("+$minutes minutes");
}
// Méthode pour vérifier le statut du vol
public function checkStatutVol() {
if ($this->tempsRetard == 0) {
echo "Le vol " . $this->numVol . " est à l'heure.\n";
} else {
echo "Le vol " . $this->numVol . " est retardé de " . $this->tempsRetard . " minutes. Nouvelle heure de départ : " . $this->getHeureDepart() . ".\n";
}
}
}
// Créer des objets Avion avec le numéro de vol, la destination et l'heure de départ
$a1 = new Avion("ABC123", "Paris", "11:30");
$a2 = new Avion("POM569", "CasaBlanca", "15:00");
$a3 = new Avion("UYT852", "Bruxelles", "12:00");
// Afficher le statut initial du vol
echo "Statut du vol:\n";
$a1->checkStatutVol();
$a2->checkStatutVol();
$a3->checkStatutVol();
// Retarder les vols
$a1->retarder(30);
$a2->retarder(90);
// Afficher l'état actuel des vols après les retards
echo "\nStatut actuel du vol:\n";
$a1->checkStatutVol();
$a2->checkStatutVol();
$a3->checkStatutVol();
?>
Sortie:
Statut du vol: Le vol ABC123 est à l'heure. Le vol POM569 est à l'heure. Le vol UYT852 est à l'heure. Statut actuel du vol: Le vol ABC123 est retardé de 30 minutes. Le vol POM569 est retardé de 90 minutes. Le vol UYT852 est à l'heure.
Éditeur de code PHP: Testez votre code en ligne!
Exercices corrigés PHP – Programmation Orientée Objet | Partie 2
Exercices corrigés PHP – Programmation Orientée Objet | Partie 3
Exercices corrigés PHP – Programmation Orientée Objet | Partie 4
Exercices corrigés PHP – Programmation Orientée Objet | Partie 5
Exercices corrigés PHP – Programmation Orientée Objet | Partie 6
QCM sur PHP – Les bases – Partie 1QCM sur PHP avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus
- Exercice PHP Corrigé – Partie 1
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 1
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 2
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 3
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 4
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 5
- Exercices corrigés PHP – Programmation Orientée Objet | Partie 6


