Niveau 06 — Programmation orientée objet

Objectif du niveau

À la fin de ce niveau, tu sais créer tes propres types de données : définir une classe avec class, initialiser ses objets avec __init__, leur donner des attributs et des méthodes, et les afficher proprement avec __str__. Tu sais faire collaborer des objets par composition (un objet qui en contient d'autres), protéger un minimum leurs données, et — tout aussi important — tu sais reconnaître les cas où la POO n'apporte rien et où des fonctions et des dicts suffisent.

Prérequis

Durée indicative et avertissement honnête

2 semaines minimum — prévois-les vraiment, et ne t'étonne pas si c'est trois.

Disons-le sans détour : self est LA difficulté n°1 de tout l'apprentissage de Python. Pourquoi ce premier paramètre partout ? Pourquoi on ne le passe pas à l'appel ? Pourquoi self.x et pas x ? Presque tous les débutants passent par une phase où « ça compile mais je ne comprends pas ce que je fais ». C'est normal, c'est documenté, et le plan du niveau le prévoit : la leçon 06-2 est entièrement consacrée à self et aux erreurs qu'il provoque, et les leçons suivantes le re-travaillent. Le déclic vient par la pratique répétée, pas par la relecture de la théorie. Si au bout de la leçon 06-2 c'est encore flou, continue quand même : 06-3 et 06-4 sont conçues pour faire mûrir la notion.

Leçons prévues

Chaque leçon suivra le template 17 sections (lessons/TEMPLATE_LECON.md).

TitreNotions couvertesStatut
06-1Pourquoi des classesLe problème : des dicts + fonctions qui se baladent ensemble ; classe = données + comportement ; classe vs objet (instance) ; premier class, premier objet ; vocabulaire (attribut, méthode, instance)
06-2__init__ et self ⚠️ LA difficulté n°1__init__, self expliqué trois fois de trois façons (schéma mémoire, sucre syntaxique Classe.methode(obj), analogie), attributs d'instance, erreurs self typiques (missing 1 required positional argument, oubli de self.)
06-3Attributs et méthodesAttributs vs variables locales des méthodes, méthodes qui lisent/modifient l'état, méthodes qui s'appellent entre elles, __str__ pour un affichage propre, attributs de classe (rapidement, pour lire du code)
06-4Encapsulation simple et compositionConvention _prive, valider dans les méthodes plutôt que toucher les attributs partout, composition : un objet qui contient une liste d'objets (ex. Bibliotheque contient des Livre), faire dialoguer les objets
06-5Quand NE PAS faire de POOSignes qu'une classe est inutile (pas d'état, une seule méthode, __init__ + un getter), classe vs dict vs fonctions : critères de choix, relecture critique de code sur-objet, refactor dans les deux sens

Pièges et erreurs emblématiques du niveau

Mini-projets du niveau

Fiches détaillées dans /projects.

Critères de sortie

Commit de fin de niveau

git add lessons/level-06-poo
git commit -m "exercises: complete level 06 (object-oriented programming)"