Exercice Corrigé: Les classes POO Python – Partie 5
Cet exercice de programmation orientée objet (POO) a pour but de vous aider à apprendre et à pratiquer les concepts de la POO. Toutes les questions sont testées sur Python 3.
Python La programmation orientée objet (POO) est basée sur le concept d’« objets », qui peuvent contenir des données et du code : des données sous la forme de variables d’instance (souvent connues sous le nom d’attributs ou de propriétés), et du code, sous la forme de méthodes. En d’autres termes, la POO permet d’encapsuler des propriétés et des comportements connexes dans des objets individuels.
Exercice 1:
Écrivez un programme Python 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:

# Définir la classe FeuDeCirculation class FeuDeCirculation: # Constructeur pour la classe FeuDeCirculation def __init__(self, couleur, duree): # Initialiser la couleur du feu de circulation self.couleur = couleur # Initialiser la durée du feu de circulation self.duree = duree # Méthode pour changer la couleur du feu de circulation def changer_couleur(self, new_color): # Mettre à jour la variable couleur avec la nouvelle couleur self.couleur = new_color # Méthode pour vérifier si le feu est rouge def est_rouge(self): # Retourne True si la couleur est rouge, sinon retourne False return self.couleur == "Rouge" # Méthode pour vérifier si le feu est vert def est_vert(self): # Retourne True si la couleur est verte, sinon retourne False return self.couleur == "Vert" # Méthode pour obtenir la durée du feu de circulation def get_duree(self): # Renvoyer la valeur de la durée return self.duree # Méthode pour définir la durée du feu de circulation def set_duree(self, duree): # Mettre à jour la variable durée avec la nouvelle valeur self.duree = duree # Code pour tester la classe FeuDeCirculation if __name__ == "__main__": # Créer un nouvel objet FeuDeCirculation avec une couleur # initiale 'Rouge' et une durée de 30 secondes. fc = FeuDeCirculation("Rouge", 30) # Afficher si le feu est rouge print("Le feu est rouge:", fc.est_rouge()) # Afficher si le feu est vert print("Le feu est vert:", fc.est_vert()) # Changer la couleur du feu de circulation en 'Vert' fc.changer_couleur("Vert") # Afficher si le feu de circulation est maintenant vert print("Le feu de circulation est maintenant vert:", fc.est_vert()) # Afficher la durée du feu de circulation print("La durée du feu est:", fc.get_duree()) # Définir une nouvelle durée pour le feu de circulation à 15 # secondes fc.set_duree(15) # Afficher la durée actualisée du feu de circulation print("La durée du feu est maintenant:", fc.get_duree())
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 Python 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:

# Importer les modules nécessaires from datetime import datetime, timedelta # Définir la classe Employee class Employee: # Constructeur pour la classe Employee def __init__(self, nom, salaire, dat_embauche): # Initialiser le nom de l'employé self.nom = nom # Initialiser le salaire de l'employé self.salaire = salaire # Initialiser la date d'embauche de l'employé self.dat_embauche = dat_embauche # Méthode pour récupérer le nom de l'employé def get_nom(self): # Renvoyer le nom de l'employé return self.nom # Méthode pour définir le nom de l'employé def set_nom(self, nom): # Mettre à jour la variable nom avec la nouvelle valeur self.nom = nom # Méthode pour récupérer le salaire de l'employé def get_salaire(self): # Renvoyer le salaire de l'employé return self.salaire # Méthode pour définir le salaire de l'employé def set_salaire(self, salaire): # Mettre à jour la variable salaire avec la nouvelle valeur self.salaire = salaire # Méthode pour récupérer la date d'embauche de l'employé def get_dat_embauche(self): # Renvoyer la date d'embauche de l'employé return self.dat_embauche # Méthode pour définir la date d'embauche de l'employé def set_dat_embauche(self, dat_embauche): # Mettre à jour la variable dat_embauche avec la nouvelle # valeur self.dat_embauche = dat_embauche # Méthode de calcul des années de service de l'employé def calculer_annee_service(self): # Calculer la période entre la date d'embauche et la date du # jour, et renvoyer le nombre d'années today = datetime.now().date() return (today - self.dat_embauche).days // 365 # Méthode pour afficher les détails de l'employé def afficher_employee(self): # Afficher le nom de l'employé print("\nNom:", self.nom) # Afficher le salaire de l'employé print("Salaire:", self.salaire) # Afficher la date d'embauche de l'employé print("Date d'embauche:", self.dat_embauche) # Code pour tester la classe Employee if __name__ == "__main__": # Créer un nouvel objet Employee nommé emp1 emp1 = Employee("Alex Babtise", 80000, datetime.strptime("2024-05-01", "%Y-%m-%d").date()) # Créer un nouvel objet Employee nommé emp2 emp2 = Employee("Bob Kimo", 40000, datetime.strptime("2022-03-01", "%Y-%m-%d").date()) # Afficher les détails de l'employé 1 emp1.afficher_employee() # Afficher les années de service de l'employé 1 print("Années de service:", emp1.calculer_annee_service()) # Afficher les détails de l'employé 2 emp2.afficher_employee() # Afficher les années de service de l'employé 2 print("Années de service:", emp2.calculer_annee_service())
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 Python 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:

# Définir la classe Etudiant class Etudiant: # Constructeur pour la classe Etudiant def __init__(self, nom, note): # Initialiser le nom de l'étudiant self.nom = nom # Initialiser la note de l'étudiant self.note = note # Initialiser la liste de cours self.cours = [] # Méthode pour récupérer le nom de l'étudiant def get_nom(self): # Retourner le nom de l'étudiant return self.nom # Méthode pour récupérer la note de l'étudiant def get_note(self): # Retourner la note de l'étudiant return self.note # Méthode pour récupérer la liste de cours de l'étudiant def get_cours(self): # Retourner la liste de cours return self.cours # Méthode pour ajouter un cours à la liste des cours de # l'étudiant def ajouter_cours(self, c): # Ajouter le cours donné à la liste des cours self.cours.append(c) # Méthode pour supprimer un cours de la liste des cours de # l'étudiant def supprimer_cours(self, c): # Supprimer le cours donné de la liste des cours self.cours.remove(c) # Méthode pour afficher les détails de l'étudiant def afficher_etudiant(self): # Afficher le nom de l'étudiant print("Nom:", self.nom) # Afficher la note de l'étudiant print("Note:", self.note) # Code pour tester la classe Etudiant if __name__ == "__main__": # Créer un nouvel objet Etudiant nommé e1 e1 = Etudiant("Alex Babtise", 18) # Créer un nouvel objet Etudiant nommé e2 e2 = Etudiant("Bob Kimo", 16) # Afficher un en-tête pour les détails de l'étudiant print("Détails de l'étudiant:") # Afficher les données de l'étudiant 1 e1.afficher_etudiant() # Afficher les données de l'étudiant 2 e2.afficher_etudiant() # Ajouter des cours pour l'étudiant 1 print("Ajouter des cours pour", e1.get_nom()) e1.ajouter_cours("Mathématiques") e1.ajouter_cours("Biologie") e1.ajouter_cours("Histoire") # Afficher le nom de e1 et sa liste de cours print("Les cours de", e1.get_nom(), ":", e1.get_cours()) # Ajouter des cours pour l'étudiant 2 print("\nAjouter des cours pour", e2.get_nom()) e2.ajouter_cours("Anglais") e2.ajouter_cours("Géologie") e2.ajouter_cours("Physique") # Afficher le nom de e2 et sa liste de cours print("Les cours de", e2.get_nom(), ":", e2.get_cours()) # Suppression du cours 'Biologie' pour e1 print("\nSuppression du cours 'Biologie' pour", e1.get_nom()) # Supprimer le cours 'Biologie' des cours de e1 e1.supprimer_cours("Biologie") # Afficher le nom de e1 et sa liste de cours mise à jour print("Les cours de", e1.get_nom(), ":", e1.get_cours())
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 Python 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:

# Définir la classe Livre class Livre: # Constructeur pour initialiser les champs titre et auteur def __init__(self, titre, auteur): # Attribuer le paramètre titre au champ titre self.titre = titre # Attribuer le paramètre auteur au champ auteur self.auteur = auteur # Méthode pour récupérer le titre def get_titre(self): # Retourner la valeur du champ titre return self.titre # Méthode Setter pour le titre def set_titre(self, titre): # Attribuer le paramètre titre au champ titre self.titre = titre # Méthode pour récupérer l'auteur def get_auteur(self): # Retourner la valeur du champ auteur return self.auteur # Méthode Setter pour l'auteur def set_auteur(self, auteur): # Attribuer le paramètre auteur au champ auteur self.auteur = auteur # Définir la classe Bibliotheque class Bibliotheque: # Constructeur pour initialiser la variable livres def __init__(self): # Créer une nouvelle liste pour contenir les objets Livre self.livres = [] # Méthode pour ajouter un livre à la liste des livres def add_livre(self, livre): # Ajouter le livre spécifié à la liste des livres self.livres.append(livre) # Méthode pour supprimer un livre de la liste des livres def remove_livre(self, livre): # Supprimer le livre spécifié de la liste des livres self.livres.remove(livre) # Méthode pour récupérer la liste des livres def get_livres(self): # Retourner la liste des livres return self.livres # Code pour tester la classe Bibliotheque et Livre if __name__ == "__main__": # Créer une nouvelle instance de la classe Bibliotheque biblio = Bibliotheque() # Créer de nouveaux objets Livre avec le titre et l'auteur livre1 = Livre("Les Misérables", "Victor Hugo") livre2 = Livre("Nana", "Émile Zola") livre3 = Livre("Les fleurs du mal", "Baudelaire") livre4 = Livre("Le Cid", "Corneille") # Ajouter les livres à la biblio biblio.add_livre(livre1) biblio.add_livre(livre2) biblio.add_livre(livre3) biblio.add_livre(livre4) print("Livres dans la bibliothèque:") # Parcourir la liste des livres de la biblio for livre in biblio.get_livres(): # Afficher le titre et l'auteur de chaque livre print(f"{livre.get_titre()} par {livre.get_auteur()}") # Supprimer un livre de la biblio biblio.remove_livre(livre2) print(f"\nLivres dans la biblio après suppression de {livre2.get_titre()} :") # Parcourir la liste mise à jour des livres dans la biblio for livre in biblio.get_livres(): # Afficher le titre et l'auteur de chaque livre print(f"{livre.get_titre()} par {livre.get_auteur()}")
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 Python 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:

# Importer les classes datetime et timedelta from datetime import datetime, timedelta # Définir la classe Avion class Avion: # Constructeur pour initialiser le numéro de vol, la destination # et l'heure de départ prévue def __init__(self, num_vol, destination, heure_depart): # Attribut pour stocker le numéro de vol self.num_vol = num_vol # Attribut pour stocker la destination self.destination = destination # Convertir l'heure de départ en datetime en combinant la # date d'aujourd'hui et l'heure donnée self.heure_depart = datetime.combine(datetime.today(), heure_depart) # Initialiser le temps de retard à 0 minutes self.temps_retard = 0 def get_num_vol(self): # Retourner le numéro de vol return self.num_vol def set_num_vol(self, num_vol): # Mettre à jour le numéro de vol self.num_vol = num_vol def get_destination(self): # Retourner la destination return self.destination def set_destination(self, destination): # Mettre à jour la destination self.destination = destination def get_heure_depart(self): # Retourner l'heure de départ sous forme d'objet time return self.heure_depart.time() def set_heure_depart(self, heure_depart): # Mettre à jour l'heure de départ en combinant la date # actuelle avec la nouvelle heure self.heure_depart = datetime.combine(self.heure_depart.date(), heure_depart) def get_temps_retard(self): # Retourner le temps de retard return self.temps_retard def retarder(self, minutes): # Mettre à jour le temps de retard self.temps_retard = minutes # Ajouter le temps de retard à l'heure de départ self.heure_depart += timedelta(minutes=minutes) def check_statut_vol(self): # Vérifier le statut du vol if self.temps_retard == 0: # Si pas de retard, afficher que le vol est à l'heure print(f"Le vol {self.num_vol} est à l'heure.") else: # Si en retard, afficher le temps de retard print(f"Le vol {self.num_vol} est retardé de {self.temps_retard} minutes.") # Code pour tester la classe Avion if __name__ == "__main__": # Créer des instances de la classe Avion avec numéro de vol, # destination et heure de départ a1 = Avion("ABC123", "Paris", datetime.strptime("11:30", "%H:%M").time()) a2 = Avion("POM569", "CasaBlanca", datetime.strptime("15:00", "%H:%M").time()) a3 = Avion("UYT852", "Bruxelles", datetime.strptime("12:00", "%H:%M").time()) # Afficher le statut initial des vols print("Statut du vol:") a1.check_statut_vol() # Vérifier et afficher l'état du vol a1 a2.check_statut_vol() # Vérifier et afficher l'état du vol a2 a3.check_statut_vol() # Vérifier et afficher l'état du vol a3 # Retarder les vols a1.retarder(30) # Retarder a1 de 30 minutes a2.retarder(90) # Retarder a2 de 90 minutes # Afficher le statut actuel des vols après les retards print("\nStatut actuel du vol:") a1.check_statut_vol() # Vérifier et afficher l'état de a1 a2.check_statut_vol() # Vérifier et afficher l'état de a2 a3.check_statut_vol() # Vérifier et afficher l'état de a3
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 Python: Testez votre code en ligne!
Exercice Corrigé: Les classes POO Python – Partie 2
Exercice Corrigé: Les classes POO Python – Partie 3
Exercice Corrigé: Les classes POO Python – Partie 4
Exercice Corrigé: Les classes POO Python – Partie 5
Exercice Corrigé: Les classes POO Python – Partie 6
Exercice Corrigé: Les classes POO Python – Partie 7
Exercice Corrigé: Les classes POO Python – Partie 8
Exercice Corrigé: Les classes POO Python – Partie 9

- Exercice Corrigé Python pour Débutant – Partie 1
- Exercice Corrigé Python pour Débutant – Partie 2
- Exercice Corrigé Python pour Débutant – Partie 3
- Exercice Corrigé Python pour Débutant – Partie 4
- Exercice Corrigé: Boucle While en Python
- Exercice Corrigé: Boucle For en Python
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 1
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 2
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 3
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 4
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 5
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 6
- Exercice Corrigé: Booléens en Python
- Exercice Corrigé: Les fonctions en Python
- Exercice Corrigé: Math en Python
- Exercice Corrigé: Gestion des exceptions en Python
- Exercice Corrigé: Les fichiers en Python – Partie 1
- Exercice Corrigé: Les fichiers en Python – Partie 2
- Exercice Corrigé: Les listes en Python – Partie 1
- Exercice Corrigé: Les listes en Python – Partie 2
- Exercice Corrigé: Les listes en Python – Partie 3
- Exercice Corrigé: Les listes en Python – Partie 4
- Exercice Corrigé: Les listes en Python – Partie 5
- Exercice Corrigé: Les listes en Python – Partie 6
- Exercice Corrigé: Les listes en Python – Partie 7
- Exercice Corrigé: Les listes en Python – Partie 8
- Exercice Corrigé: Les listes en Python – Partie 9
- Exercice Corrigé: Les listes en Python – Partie 10
- Exercice Corrigé: Les listes en Python – Partie 11
- Exercice Corrigé: Les listes en Python – Partie 12
- Exercice Corrigé: Les tuples en Python
- Exercice Corrigé: Les ensembles(Set) en Python
- Exercice Corrigé: Les dictionnaires en Python – Partie 1
- Exercice Corrigé: Les dictionnaires en Python – Partie 2
- Exercice Corrigé: Les dictionnaires en Python – Partie 3
- Exercice Corrigé: Les dictionnaires en Python – Partie 4
- Exercice Corrigé: Les expressions régulières en Python – Partie 1
- Exercice Corrigé: Les expressions régulières en Python – Partie 2
- Exercice Corrigé: Les expressions régulières en Python – Partie 3
- Exercice Corrigé: Les expressions régulières en Python – Partie 4
- Exercice Corrigé: Les classes POO Python – Partie 1
- Exercice Corrigé: Les classes POO Python – Partie 2
- Exercice Corrigé: Les classes POO Python – Partie 3
- Exercice Corrigé: Les classes POO Python – Partie 4
- Exercice Corrigé: Les classes POO Python – Partie 5
- Exercice Corrigé: Les classes POO Python – Partie 6
- Exercice Corrigé: Les classes POO Python – Partie 7
- Exercice Corrigé: Les classes POO Python – Partie 8
- Exercice Corrigé: Les classes POO Python – Partie 9
- Exercice Corrigé: NumPy – Partie 1
- Exercice Corrigé: NumPy – Partie 2
- Exercice Corrigé: NumPy – Partie 3
- Exercice Corrigé: NumPy – Partie 4
- Exercice Corrigé: NumPy – Partie 5
- Exercice Corrigé: NumPy – Partie 6
- Exercice Corrigé: NumPy – Partie 7
- Exercice Corrigé: NumPy – Partie 8
- Exercice Corrigé: Python Avancé – Partie 1
- Exercice Corrigé: Python Avancé – Partie 2
- Exercice Corrigé: Python Avancé – Partie 3
- Exercice Corrigé: Python Avancé – Partie 4
- Exercice Python Corrigé En Ligne – Partie 1
- Exercice Python Corrigé En Ligne – Partie 2
- Exercice Python Corrigé En Ligne – Partie 3