Résumé du Cours : Programmation Orientée
Objet (POO) en Python
Introduction
Ce résumé explique simplement et clairement les notions essentielles de la Programmation Orientée
Objet (POO)
PARTIE 1 : Comprendre la POO
1. Programmation procédurale (avant la POO)
Avant la POO, on écrivait des programmes composés de :
• Données (variables)
• Fonctions (procédures)
Problèmes :
• Difficile de réutiliser le code
• Trop compliqué quand le projet devient grand
📌 Exemple : Pour gérer un compte bancaire, on avait des fonctions séparées pour créditer, débiter… et
des variables séparées pour stocker les infos.
2. Passage à la POO
La POO est née pour résoudre ces problèmes.
En POO, on regroupe les données + les actions ensemble dans des objets.
📌 Exemple simple : Un "CompteBancaire" contient :
• des données : solde, numéro
• des méthodes : créditer(), débiter()
3. Les avantages de la POO
Modularité : le code est mieux organisé
Abstraction : on cache les détails inutiles
1
Réutilisation : on peut réutiliser des classes
Facile à maintenir : modifier une classe suffit
📌 Exemple : Quand tu envoies un SMS, l’interface est simple. Tout le travail interne est caché.
4. Historique rapide
• 1970 : premiers concepts (Simula, Smalltalk)
• 1980 : C++, Objective‑C
• 1990 : Java
• Aujourd’hui : Python, PHP, C#, etc.
PARTIE 2 : Objet & Classe
1. Qu’est‑ce qu’un objet ?
Un objet possède :
• Une identité (adresse mémoire)
• Un état (attributs)
• Un comportement (méthodes)
📌 Exemple : Une voiture → couleur, marque, vitesse, accélérer()
2. Attributs
Ce sont les informations internes d’un objet.
📌 Exemple :
[Link] = "rouge"
3. Méthodes
Ce sont les actions qu’un objet peut faire.
📌 Exemple :
[Link]()
2
4. Classe : modèle des objets
Une classe est comme un plan ou une recette. Elle définit :
• les attributs
• les méthodes
Un objet = une instance d’une classe.
📌 Exemple : Classe Voiture → définit couleur, marque, accélérer() Objets → voiture1, voiture2…
5. Constructeur
Méthode spéciale exécutée lors de la création d’un objet. En Python : __init__()
📌 Exemple :
class Voiture:
def __init__(self, marque, couleur):
[Link] = marque
[Link] = couleur
6. Destructeur
Méthode appelée lors de la destruction d’un objet. En Python : rarement utilisé car Python gère la
mémoire automatiquement.
7. Interaction entre objets
Les objets communiquent en s’envoyant des messages → appel de méthodes.
📌 Exemple : Un feu de signalisation change la vitesse d’une voiture :
[Link]()
[Link](50)
3
PARTIE 3 : Les trois grands piliers de la POO
Héritage
L’héritage permet de créer une classe fille à partir d’une classe mère.
La classe fille récupère les attributs et méthodes de la classe mère.
📌 Exemple :
• Classe Personne : nom, âge
• Classe Etudiant (hérite de Personne) : ajoute note1, note2
Types d’héritage
• Simple : 1 classe mère
• Multiple : plusieurs classes mères
• En cascade : A → B → C
Polymorphisme
Un même nom de méthode peut avoir différents comportements selon l’objet.
📌 Exemple :
[Link]()
• Pour un cercle → formule du cercle
• Pour un rectangle → formule du rectangle
Encapsulation
C’est protéger les données d’un objet.
✔ On ne peut accéder aux attributs que via des méthodes.
📌 Exemple : Attribut solde est privé → on utilise retirer() et deposer()
Visibilité
• public : accessible partout
• privé : accessible seulement dans la classe
• (Python utilise _ et __ pour simuler cela)
4
PARTIE 4 : Abstraction
L’abstraction consiste à créer des classes incomplètes, qui servent de modèles.
1. Classe abstraite
• Contient des méthodes abstraites (sans corps)
• Ne peut pas être instanciée
📌 Exemple :
Classe Forme → surface() et perimetre() sont abstraites
Rectangle, Cercle → doivent les implémenter
2. Interface
Une interface contient uniquement des méthodes abstraites.
📌 Exemple : Interface Imprimable → méthode imprimer() Classe Rectangle → doit implémenter
imprimer() Classe Document → doit implémenter imprimer()
PARTIE 5 : POO en Python
1. Création d’une classe
class Personne:
def __init__(self, nom, age):
[Link] = nom
[Link] = age
2. Méthodes d’instance
def afficher(self):
print(f"Nom: {[Link]}, Age: {[Link]}")
5
3. Héritage en Python
class Etudiant(Personne):
def __init__(self, nom, age, note1):
super().__init__(nom, age)
self.note1 = note1
4. Encapsulation en Python
class Compte:
def __init__(self, solde):
self.__solde = solde # privé
def deposer(self, montant):
self.__solde += montant
5. Méthodes et classes abstraites en Python
from abc import ABC, abstractmethod
class Forme(ABC):
@abstractmethod
def surface(self):
pass
PARTIE 6 : Exercices et Pratique en Python
🔹 Exercice 1 : Créer une classe simple
Objectif : comprendre attributs + méthodes
Créer une classe Livre avec :
• attributs : titre, auteur, pages
• méthode afficher()
📌 Exemple attendu :
class Livre:
def __init__(self, titre, auteur, pages):
6
[Link] = titre
[Link] = auteur
[Link] = pages
def afficher(self):
print(f"{[Link]} - {[Link]} ({[Link]} pages)")
l = Livre("Python 101", "Alice", 220)
[Link]()
🔹 Exercice 2 : Constructeur et interaction
Créer deux classes :
• CompteBancaire (solde, deposer(), retirer())
• Client (nom, compte)
📌 Interaction :
compte = CompteBancaire(1000)
client = Client("Soufian", compte)
[Link](200)
🔹 Exercice 3 : Héritage simple
Créer :
• Classe Personne (nom, age)
• Classe Etudiant (hérite de Personne + note)
📌 Exemple :
class Personne:
def __init__(self, nom, age):
[Link] = nom
[Link] = age
def afficher(self):
print([Link], [Link])
class Etudiant(Personne):
def __init__(self, nom, age, note):
super().__init__(nom, age)
[Link] = note
7
def afficher(self): # redéfinition
super().afficher()
print("Note:", [Link])
🔹 Exercice 4 : Polymorphisme
Créer une classe Forme avec méthode surface() puis :
• Rectangle
• Cercle
📌 Exemple :
shapes = [Rectangle(3,4), Cercle(5)]
for s in shapes:
print([Link]()) # polymorphisme
🔹 Exercice 5 : Encapsulation
Créer une classe Compte avec solde privé __solde .
📌 Exemple :
class Compte:
def __init__(self, solde):
self.__solde = solde
def solde(self): # getter
return self.__solde
🔹 Exercice 6 : Abstraction (niveau avancé)
Créer une classe abstraite Forme + sous‑classes concrètes.
Conclusion
La POO est une manière puissante et moderne d’organiser le code. Elle repose sur :
• Objet & Classe
• Héritage
8
• Polymorphisme
• Encapsulation
• Abstraction
© Copyright Soufian