La classe est un modèle (plan, moule) qui définit des attributs (données) et des méthodes (comportements). Un objet est une instance concrète de cette classe créée en mémoire. Une classe peut générer plusieurs objets indépendants. En Python : class Voiture: → ma_voiture = Voiture('Toyota', 100).
Encapsulation
Principe qui consiste à masquer les données internes d'un objet et n'y autoriser l'accès que via des méthodes contrôlées (getters/setters). Protège l'intégrité des données contre les modifications non souhaitées. En Python : attributs privés préfixés par '__' (name mangling). Permet de changer l'implémentation interne sans impacter le code client.
Constructeur __init__
Méthode spéciale appelée automatiquement à la création de chaque objet. Initialise les attributs de l'instance. Le paramètre 'self' représente l'objet lui-même. Toujours le premier paramètre. En Python : def __init__(self, marque, vitesse): self.marque = marque, self.vitesse = vitesse.
Héritage et polymorphisme
Héritage
Une classe enfant hérite automatiquement des attributs et méthodes de sa classe parent. Évite la duplication de code (DRY : Don't Repeat Yourself). Relation 'est un' : Chien est un Animal → Chien hérite de Animal. L'enfant peut étendre le parent (nouvelles méthodes) ou le spécialiser (surcharger des méthodes).
Polymorphisme
Même méthode, comportements différents selon la classe réelle de l'objet. Exemple : la méthode parler() produit 'Woof' pour Chien, 'Miaou' pour Chat, cri générique pour Animal. Permet d'écrire du code générique qui fonctionne sur des objets de types différents sans modifier ce code.
Composition vs héritage
Relation 'est un' (héritage) : Chien est un Animal → Chien hérite de Animal. Relation 'a un' (composition) : Voiture a un Moteur → attribut Moteur dans la classe Voiture. Préférer la composition quand l'héritage crée des couplages trop forts. La composition est plus flexible.
Applications et méthode
Conception d'une hiérarchie de classes
Identifier les entités du problème → déterminer les relations (héritage, composition) → définir les attributs et méthodes de chaque classe → coder en respectant l'encapsulation. Outils UML : diagramme de classes. Principe SOLID pour un code maintenable.