Programmation orientée objet
Classes, objets, constructeurs et héritage en MicroPython. Organiser son code pour le rendre réutilisable et lisible.
Concepts fondamentaux
La programmation orientée objet (POO) regroupe des données (attributs) et des fonctions (méthodes) dans une classe. À partir d'une classe, on crée des instances (objets).
Tu utilises déjà des objets sans le savoir :
Le constructeur __init__
Le constructeur __init__(self) est appelé automatiquement à la création de l'objet. self est la référence à l'objet en cours de création.
Application sur ESP32
On peut créer une classe LED pour encapsuler la logique de clignotement :
Héritage
L'héritage permet à une classe enfant de réutiliser et d'étendre les méthodes d'une classe parente.
Algorithme PGCD
La récursivité est un concept fondamental : une fonction qui s'appelle elle-même. L'algorithme d'Euclide pour le PGCD (Plus Grand Commun Diviseur) en est un exemple classique.
💡 Comment ça marche
pgcd(48, 18) → pgcd(18, 12) → pgcd(12, 6) → pgcd(6, 0) → retourne 6. La condition if b == 0 est le cas de base qui arrête la récursion.
Exemples commentés
Chaque exemple est précédé de son contexte. Le code est affiché directement — bouton copier + lien GitHub disponibles.
🧱 Classes et objets
Programmation orientée objet en MicroPython — classes, modules, héritage.
1 Concepts fondamentaux de la POO
La programmation orientée objet (POO) regroupe des données (attributs) et des fonctions (méthodes) dans une classe. À partir d'une classe, on crée des instances (objets).
Vous utilisez déjà des objets sans le savoir :
led = Pin(2, Pin.OUT) # led est un objet de la classe Pin
np = NeoPixel(Pin(26), 8) # np est un objet de la classe NeoPixel
np.write() # write() est une méthode de l'objet np Progression des exemples :
- classe-1.py : définir une classe avec des attributs directs
- classe-2.py : utiliser le constructeur
__init__(self) - classe-3.py : passer des paramètres au constructeur + ajouter une méthode
Le constructeur __init__(self, ...) est appelé automatiquement à la création de l'objet. self est la référence à l'objet en cours de création. L'héritage permet à une classe enfant de réutiliser et d'étendre les méthodes d'une classe parente.
classe-1.py — Première classe — attributs directs .python cours-exemples/poo/classe-1.py 20 lignes
GitHub
class Personne :
nom = ""
prenom = ""
age = 0
lieu_residence = ""
personne1 = Personne()
personne2 = Personne()
personne1.nom = "DELUNE"
personne1.prenom = "Claire"
personne1.age = "30"
personne1.lieu_residence = "METZ"
personne2.nom = "CELERT"
personne2.prenom = "Jacques"
personne2.age = "32"
personne2.lieu_residence = "NANCY"
print(personne1.nom) classe-2.py — Constructeur __init__ simple .python cours-exemples/poo/classe-2.py 14 lignes
GitHub
class Personne :
def __init__(self) :
self.nom = ""
self.prenom = ""
self.age = "0"
self.lieu_residence = ""
personne1 = Personne()
personne1.nom = "DELUNE"
personne1.prenom = "Claire"
personne1.age = "30"
personne1.lieu_residence = "METZ"
print(personne1.age) classe-3.py — Paramètres au constructeur + méthode .python cours-exemples/poo/classe-3.py 9 lignes
GitHub
class Personne :
def __init__(self) :
self.nom = "DELUNE"
self.prenom = "Claire"
self.age = "30"
self.lieu_residence = "METZ"
personne1 = Personne()
print(personne1.age) pgcd.py — Algorithme PGCD récursif .python cours-exemples/poo/pgcd.py 25 lignes
GitHub
# PGCD : programme de calcul du PCGD de 2 entiers
# Auteur : Vincent HERMITANT - ENIM 2020
x = 20
y = 70
diviseurs_x=[] # creation liste vide pour diviseurs de x
diviseurs_y=[] # creation liste vide pour diviseurs de y
# creation d'une fonction pour trouver les elements communs a deux listes
def inter(liste1, liste2):
liste_elements_communs = [value for value in liste1 if value in liste2]
return liste_elements_communs
for a in range (1,max(x,y)+1):
if x % a == 0 : # si x est divisible par a
diviseurs_x.append(a) # ajout a la liste des diviseurs de x
if y % a == 0 : # si y est divisible par a
diviseurs_y.append(a) # ajout a la liste des diviseurs de y
diviseurs_communs = inter(diviseurs_x, diviseurs_y)
plus_grand_commun_diviseur = max(diviseurs_communs) # retourne le maxi
print("x = ", x, "; y = ", y)
print ("Liste des diviseurs de x :",diviseurs_x)
print("Liste des diviseurs de y :",diviseurs_y)
print("Liste des diviseurs communs : ", diviseurs_communs)
print("PGCD : ", plus_grand_commun_diviseur)Atelier 01 — Serveur web ESP32
Mets en pratique ces concepts avec un projet WiFi complet.