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:
Ecrivez un programme Python pour créer une classe Vehicule avec les attributs vitesse_max et kilometrage. Créez une instance de la classe Vehicule et afficher les valeurs de ses attributs.
Solution:
# Créer une classe nommée Vehicule
class Vehicule:
# Créer le constructeur pour initialiser les attributs
def __init__(self, vitesse_max, kilometrage):
self.vitesse_max = vitesse_max
self.kilometrage = kilometrage
# Créer un objet(instance) de la classe Vehicule
v = Vehicle(220, 14000)
# Afficher les valeurs des attributs de l'objet 'v'.
print(v.vitesse_max, v.kilometrage)
Sortie:
220 14000
Exercice 2:
Créer une classe Vehicule sans variables ni méthodes
Solution:
class Vehicule:
pass
Explication:
L’instruction pass est utilisée comme un espace réservé pour le futur code. Lorsque l’instruction pass est exécutée, il ne se passe rien, mais vous évitez d’obtenir une erreur lorsque le code vide n’est pas autorisé. Un code vide n’est pas autorisé dans les définitions de classes.
Exercice 3:
Écrivez un programme Python pour créer deux classes vides, Etudiant et Note. Créez maintenant quelques instances et vérifiez si elles sont ou non des instances de ces classes. Vérifiez également si ces classes sont des sous-classes de la classe Object ou non.
La fonction Python isinstance() renvoie la valeur True si l’objet appartient aux types spécifiés, et False s’il ne correspond pas aux types spécifiés.
La fonction Python issubclass() est une fonction utilisée pour vérifier si une classe est une sous-classe d’une autre classe ou non. Cette fonction renvoie True si la classe donnée est la sous-classe de la classe donnée, sinon elle renvoie False. Nous pouvons vérifier l’héritage d’une classe en Python en utilisant issubclass().
Exercice 4:
Écrivez une classe Python nommée Etudiant avec deux attributs nom_etudiant, notes. Modifiez les valeurs des attributs de cette classe et affichez les valeurs originales et modifiées de ces attributs.
Solution:
class Etudiant:
nom_etudiant = 'Alex Babtise'
notes = 96
# Afficher les valeurs originales
print(f"Nom de l'étudiant: {getattr(Etudiant, 'nom_etudiant')}")
print(f"Notes: {getattr(Etudiant, 'notes')}")
# Modifier les valeurs des attributs
setattr(Etudiant, 'nom_etudiant', 'Emily Finoris')
setattr(Etudiant, 'notes', 88)
# Afficher les valeurs modifiées
print(f"Nom de l'étudiant: {getattr(Etudiant, 'nom_etudiant')}")
print(f"Notes: {getattr(Etudiant, 'notes')}")
Sortie:
Nom de l'étudiant: Alex Babtise
Notes: 96
Nom de l'étudiant: Emily Finoris
Notes: 88
Exercice 5:
Écrivez une classe Python nommée Etudiant avec deux attributs: id_etudiant, nom_etudiant. Créez une fonction display() pour afficher tous les attributs et leurs valeurs dans la classe Etudiant.
Solution:
class Etudiant:
id_etudiant = '101'
nom_etudiant = 'Alex Babtise'
def display():
print(f"ID de l'étudiant: {Etudiant.id_etudiant}\nNom de l'étudiant: {Etudiant.nom_etudiant}")
print("Attributs et leurs valeurs de la classe Student:")
Etudiant.display()
Sortie:
Attributs et leurs valeurs de la classe Student:
ID de l'étudiant: 101
Nom de l'étudiant: Alex Babtise
Exercice 6:
Écrire une classe Python Employee avec des attributs comme emp_id, emp_name, emp_salary, et emp_department et des méthodes comme calculer_emp_salary, emp_affecter_department, et afficher_employee.
Utilisez la méthode « emp_affecter_department » pour modifier le département d’un employé.
Utilisez la méthode « afficher_employee » pour afficher les détails d’un employé.
La méthode « calculer_emp_salary » prend deux arguments: le salaire et heures_travaillees, qui est le nombre d’heures travaillées par l’employé. Si le nombre d’heures travaillées est supérieur à 50, la méthode calcule les heures supplémentaires et les ajoute au salaire. Les heures supplémentaires sont calculées selon la formule suivante:
Détails de l'employé:
ID: Alex
Nom: E1001
Salaire: 20000
Département: Comptabilité
----------------------
ID: Emily
Nom: E1002
Salaire: 56000
Département: Finance
----------------------
ID: Bob
Nom: E1003
Salaire: 12000
Département: Opérations
----------------------
ID: Jean
Nom: E1004
Salaire: 80000
Département: Vents
----------------------
Employé mit à jour:
ID: Alex
Nom: E1001
Salaire: 20000
Département: Recherche
----------------------
ID: Emily
Nom: E1002
Salaire: 56000.0
Département: Finance
----------------------
ID: Bob
Nom: E1003
Salaire: 12000
Département: Opérations
----------------------
ID: Jean
Nom: E1004
Salaire: 80000.0
Département: Informatique
----------------------
Exercice 7:
Écrivez une classe Python Restaurant avec des attributs comme menu_plats, reserver_table, et commandes_clients, et des méthodes comme ajouter_plats_au_menu, reserverTable, et commandesClient.
Effectuez maintenant les tâches suivantes :
Ajouter des plats au menu.
Réserver des tables.
Prendre les commandes des clients.
Afficher le menu.
Afficher les réservations de table.
Afficher les commandes des clients.
Remarque: utilisez des dictionnaires et des listes pour stocker les données.
Solution:
class Restaurant:
def __init__(self):
self.menu_plats = {}
self.reserver_table = []
self.commandes_clients = []
def ajouter_plats_au_menu(self, plat, prix):
self.menu_plats[plat] = prix
def reserverTable(self, id_table):
self.reserver_table.append(id_table)
def commandesClient(self, id_table, commande):
commande_info = {'id_table': id_table, 'commande': commande}
self.commandes_clients.append(commande_info)
def afficher_plats_menu(self):
for plat, prix in self.menu_plats.items():
print("{}: {}".format(plat, prix))
def afficher_table_reservations(self):
for table in self.reserver_table:
print("Table {}".format(table))
def afficher_commandes_clients(self):
for commande in self.commandes_clients:
print("Table {}: {}".format(commande['id_table'], commande['commande']))
restaurant = Restaurant()
# Ajouter des plats
restaurant.ajouter_plats_au_menu("Pizzas", 9.99)
restaurant.ajouter_plats_au_menu("Salade", 8)
restaurant.ajouter_plats_au_menu("Crêpe", 19.99)
restaurant.ajouter_plats_au_menu("Sandwichs", 3.99)
restaurant.ajouter_plats_au_menu("Fish & Chips:", 15)
# Réservez les tables
restaurant.reserverTable(1)
restaurant.reserverTable(2)
restaurant.reserverTable(3)
# Commander des plats
restaurant.commandesClient(1, "Pizzas")
restaurant.commandesClient(1, "Crêpe")
restaurant.commandesClient(2, "Sandwichs")
restaurant.commandesClient(2, "Crêpe")
print("\nPlats du restaurant et leurs prix:")
restaurant.afficher_plats_menu()
print("\nTable réservée dans le restaurant:")
restaurant.afficher_table_reservations()
print("\nAfficher les commandes des clients:")
restaurant.afficher_commandes_clients()
Sortie:
Plats du restaurant et leurs prix:
Pizzas: 9.99
Salade: 8
Crêpe: 19.99
Sandwichs: 3.99
Fish & Chips:: 15
Table réservée dans le restaurant:
Table 1
Table 2
Table 3
Afficher les commandes des clients:
Table 1: Pizzas
Table 1: Crêpe
Table 2: Sandwichs
Table 2: Crêpe
Exercice 8:
Écrire une classe Python BankAccount avec des attributs tels que numero_compte, solde, date_ouverture et nom_du_client, et des méthodes telles que versement, retrait et vérification du solde.
Solution:
class BankAccount:
def __init__(self, numero_compte, date_ouverture, solde, nom_du_client):
self.numero_compte = numero_compte
self.date_ouverture = date_ouverture
self.solde = solde
self.nom_du_client = nom_du_client
def verser(self, montant):
self.solde += montant
print(f"{montant}€ a été déposé sur votre compte.")
def retirer(self, montant):
if montant > self.solde:
print("Solde insuffisant.")
else:
self.solde -= montant
print(f"{montant}€ a été retiré de votre compte.")
def verifier_solde(self):
print(f"Le solde actuel est {self.solde}€.")
def afficher_details_client(self):
print("Nom:", self.nom_du_client)
print("Numéro de compte:", self.numero_compte)
print("Date d'ouverture:", self.date_ouverture)
print(f"Solde: {self.solde}€\n")
# Saisir les données du client
compte1 = BankAccount(1001, "01-11-2025", 1000, "Alex Babtise")
compte2 = BankAccount(1002, "11-04-2025", 2000, "Emily Doglas")
compte3 = BankAccount(1003, "12-01-2024", 3000, "Bob Firouq")
compte4 = BankAccount(1004, "01-01-2025", 3000, "Jean Kanira")
compte5 = BankAccount(1005, "01-06-2025", 4000, "Ali Portois")
print("Détails du client:")
compte1.afficher_details_client()
compte2.afficher_details_client()
compte3.afficher_details_client()
compte4.afficher_details_client()
compte5.afficher_details_client()
print("=============================")
compte4.afficher_details_client()
compte4.verser(1000)
compte4.verifier_solde()
compte4.retirer(5000)
compte4.retirer(3500)
compte4.verifier_solde()
Sortie:
Détails du client:
Nom: Alex Babtise
Numéro de compte: 1001
Date d'ouverture: 01-11-2025
Solde: 1000€
Nom: Emily Doglas
Numéro de compte: 1002
Date d'ouverture: 11-04-2025
Solde: 2000€
Nom: Bob Firouq
Numéro de compte: 1003
Date d'ouverture: 12-01-2024
Solde: 3000€
Nom: Jean Kanira
Numéro de compte: 1004
Date d'ouverture: 01-01-2025
Solde: 3000€
Nom: Ali Portois
Numéro de compte: 1005
Date d'ouverture: 01-06-2025
Solde: 4000€
=============================
Nom: Jean Kanira
Numéro de compte: 1004
Date d'ouverture: 01-01-2025
Solde: 3000€
1000€ a été déposé sur votre compte.
Le solde actuel est 4000€.
Solde insuffisant.
3500€ a été retiré de votre compte.
Le solde actuel est 500€.
Exercice 9:
Après l’exercice 1, créer une classe fille Bus qui héritera de toutes les variables et méthodes de la classe Vehicule. Créez une instance de la classe fille Bus et afficher les valeurs de ses attributs.
Solution:
class Vehicule:
def __init__(self, nom, vitesse_max, kilometrage):
self.nom = nom
self.vitesse_max = vitesse_max
self.kilometrage = kilometrage
class Bus(Vehicule):
pass
b = Bus("Mercedes", 220, 14000)
print("Nom du véhicule:", b.nom, "| Vitesse:", b.vitesse_max, "| Kilométrage:", b.kilometrage)
Sortie:
Nom du véhicule: Mercedes | Vitesse: 220 | Kilométrage: 14000
Exercice 10:
Créez une classe Bus qui hérite de la classe Véhicule. Surcharger la méthode nombre_de_places() dans la classe fille avec une valeur par défaut de 50. Utilisez le code suivant pour la classe mère Véhicule.
class Vehicule:
def __init__(self, nom, vitesse_max, kilometrage):
self.nom = nom
self.vitesse_max = vitesse_max
self.kilometrage = kilometrage
def nombre_de_places(self, capacite):
return f"La capacité de {self.nom} est {capacite} passagers"
Solution:
class Vehicule:
def __init__(self, nom, vitesse_max, kilometrage):
self.nom = nom
self.vitesse_max = vitesse_max
self.kilometrage = kilometrage
def nombre_de_places(self, capacite):
return f"La capacité de {self.nom} est {capacite} passagers"
class Bus(Vehicule):
# attribuer une valeur par défaut à l'argument capacité
def nombre_de_places(self, capacite=50):
return super().nombre_de_places(capacite=50)
b = Bus("Bus Mercedes", 220, 14000)
print(b.nombre_de_places())
Sortie:
La capacité de Bus Mercedes est 50 passagers
Éditeur de code Python: Testez votre code en ligne!
QCM Python – Partie 1Bienvenue dans notre QCM Python ! Que vous soyez débutant ou déjà expérimenté en programmation, ce questionnaire à choix multiples est l’occasion parfaite de tester…Lire plus
Exercice Corrigé : Les classes POO Python – Partie 1 exercice 4 et 5
Remarque :
Les énoncés ne sont pas clairs dans la mesure où il n’est pas précisé attribut de classe!!!
exercice 4:
Écrivez une classe Python nommée Etudiant avec deux attributs nom_etudiant, notes. Modifiez les valeurs des attributs de cette classe et affichez les valeurs originales et modifiées de ces attributs.
exercice 5:
Écrivez une classe Python nommée Etudiant avec deux attributs: id_etudiant, nom_etudiant. Créez une fonction display() pour afficher tous les attributs et leurs valeurs dans la classe Etudiant.
Salut! Pour l’exercice 4, il s’agit d’une classe simple avec des attributs d’instance (nom_etudiant, notes), donc on modifie directement les valeurs de ces attributs. Pour l’exercice 5, si tu veux créer une fonction display(), il faut simplement afficher les attributs d’instance comme id_etudiant et nom_etudiant dans cette fonction. J’espère que ça t’aide à clarifier les choses ! Si tu as d’autres questions, n’hésite pas. »
Exercice Corrigé : Les classes POO Python – Partie 1 exercice 4 et 5
Remarque :
Les énoncés ne sont pas clairs dans la mesure où il n’est pas précisé attribut de classe!!!
exercice 4:
Écrivez une classe Python nommée Etudiant avec deux attributs nom_etudiant, notes. Modifiez les valeurs des attributs de cette classe et affichez les valeurs originales et modifiées de ces attributs.
exercice 5:
Écrivez une classe Python nommée Etudiant avec deux attributs: id_etudiant, nom_etudiant. Créez une fonction display() pour afficher tous les attributs et leurs valeurs dans la classe Etudiant.
Salut! Pour l’exercice 4, il s’agit d’une classe simple avec des attributs d’instance (nom_etudiant, notes), donc on modifie directement les valeurs de ces attributs. Pour l’exercice 5, si tu veux créer une fonction display(), il faut simplement afficher les attributs d’instance comme id_etudiant et nom_etudiant dans cette fonction. J’espère que ça t’aide à clarifier les choses ! Si tu as d’autres questions, n’hésite pas. »