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

- 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