DataManip Insights ÉPISODE 1POO pour débutantsGratuit
🧱 Épisode 1 · Classe et objet

« Pour ranger des personnes, trois listes (noms, âges, villes) suffisent. »
Non : dès qu'on en trie une seule, 9 lignes sur 10 sont mélangées.

Une classe est un modèle qui regroupe des données (les attributs : nom, âge, ville) et des actions (les méthodes). Un objet est un exemplaire de ce modèle : la personne Léa, 31 ans. Sans classe, on range les mêmes informations dans des listes parallèles, où la case n de chaque liste doit parler de la même personne. Il suffit de trier une seule liste pour casser ce lien : sur 10 personnes, 1,0 ligne seulement reste cohérente en moyenne, 9,0 sont mélangées (90,0 %). Avec une liste d'objets, le nom, l'âge et la ville voyagent ensemble : on trie les personnes, pas les colonnes.

🎯 L'analogie clé

Des fiches de bibliothèque agrafées par personne, face à trois tas de papiers séparés (noms, âges, villes) : battre un seul tas, c'est perdre qui a quel âge.

Le principe

Un objet regroupe
ce qui va ensemble.

Pour n personnes dont on trie les âges seuls, chaque ligne a une chance sur n de retomber à sa place, donc il en reste 1 en moyenne, quel que soit n : la part de lignes mélangées vaut (n − 1) ÷ n, soit 90,0 % pour 10 personnes et 99,0 % pour 100. Le graphique donne cette part selon le nombre de personnes ; plus il y en a, plus l'écart avec un objet qui garde tout ensemble est grand.

🧱
Classe
Le modèle : class Personne regroupe les attributs et les méthodes.
🪪
Objet
Un exemplaire du modèle : Personne("Léa", 31).
🏷️
Attribut
Une donnée rangée dans l'objet : p.nom, p.age.
Le point clé : avec trois listes parallèles dont on trie une seule, 9 lignes sur 10 sont mélangées (90,0 %) ; avec des objets, aucune.
À vous de manipuler

Triez une colonne,
comptez les dégâts.

Réglez le nombre de personnes et le nombre de listes à tenir synchronisées. Le premier graphique donne la part de lignes mélangées quand on trie une seule liste ; le point blanc est votre réglage.

Lignes mélangées selon le nombre de personnes
Part de lignes mélangées (%) quand on trie une seule liste

Hypothèse : ordre initial quelconque et valeurs distinctes ; lignes mélangées = n − 1 en moyenne.

Lignes cohérentes
-
en moyenne, quel que soit n
Lignes mélangées
-
en moyenne
Part mélangée
-
des lignes
Listes → objets
-
à synchroniser contre une liste
À retenir : pour 10 personnes, 1,0 ligne cohérente et 9,0 mélangées en moyenne, soit 90,0 % ; trois listes à tenir synchronisées se réduisent à une liste d'objets.
Le cas du hasard

Parfois, aucune ligne
ne reste en place.

La probabilité qu'aucune ligne ne reste à sa place vaut 50,0 % pour 2 personnes, 33,3 % pour 3, 36,7 % pour 5 et 36,8 % pour 10 : elle se stabilise autour de 36,8 %, soit environ 1 chance sur 3, quelle que soit la taille du groupe. Dans ce cas, le tableau est entièrement faux.

Chance qu'aucune ligne ne reste en place
Probabilité (%) qu'aucune ligne ne reste cohérente selon le nombre de personnes

Formule : somme de (−1)^i ÷ i! pour i de 0 à n, qui tend vers 1 ÷ e ≈ 36,8 %.

2 personnes
-
chance qu'aucune ligne ne soit cohérente
3 personnes
-
chance qu'aucune ligne ne soit cohérente
5 personnes
-
chance qu'aucune ligne ne soit cohérente
10 personnes
-
chance qu'aucune ligne ne soit cohérente
Le point clé : dès 5 personnes, la probabilité que le tri ne laisse aucune ligne cohérente est d'environ 36,8 % : le désalignement n'est pas un cas rare.
En pratique

Quatre réflexes
pour modéliser.

Voici la démarche, puis un exemple.

🪪
Un objet par entité
Une personne, un compte, un produit : un objet, pas trois colonnes.
↕️
Triez des objets
sorted(gens, key=lambda p: p.age) trie les personnes entières.
🔤
Nommez la classe au singulier
Personne, Compte, Panier : une classe décrit un exemplaire.
🧲
Regroupez ce qui bouge ensemble
Des données qui évoluent toujours ensemble vont dans le même objet.
Python · poo_classe_objet.py
noms = ["Léa", "Tom", "Inès"]
ages = [31, 24, 45]
ages.sort()                  # [24, 31, 45] : noms n'a pas bougé !

class Personne:
    def __init__(self, nom, age):
        self.nom = nom
        self.age = age

gens = [Personne("Léa", 31), Personne("Tom", 24), Personne("Inès", 45)]
gens.sort(key=lambda p: p.age)   # le nom voyage avec l'âge
Test rapide

Vérifiez votre compréhension.

Trois listes parallèles décrivent 10 personnes (valeurs distinctes). On trie seulement la liste des âges. Combien de lignes restent cohérentes en moyenne ?

Ce qu'il faut retenir

Épisode suivant

Sans contrôle, 1 000 € moins 40 retraits de 30 € donnent −200 € ; avec une méthode qui refuse, le solde reste à 10 € et 7 retraits sont rejetés dès le 34e

Un objet regroupe ses données. Mais si n'importe quel code peut les modifier, plus rien n'est garanti. C'est le rôle de l'encapsulation.

ACCÈS COMPLET

Cet épisode est gratuit. Les 282 autres t'attendent.

Statistiques, finance quantitative, machine learning, deep learning, LLM, agents IA, MLOps : 321 épisodes avec des simulateurs à manipuler, pas des vidéos.

99 € (+ TVA selon le pays) · accès à vie · remboursement possible sous 7 jours
Débloquer les 282 épisodes · 99 € J'ai déjà une clé de licence
FULL ACCESS

This episode is free. The other 282 are waiting for you.

Statistics, quantitative finance, machine learning, deep learning, LLMs, AI agents, MLOps: 321 interactive episodes with simulators to play with, not videos.

€99 (+ VAT depending on country) · lifetime access · 7-day refund
Unlock the 282 episodes · €99 I already have a license key