Spé. NSI · Terminale · cours rédigé et vérifié par Claryo, conforme au Bulletin officiel
La programmation orientée objet (POO) organise un programme autour d'objets qui regroupent des données et des traitements.
Une classe est un modèle décrivant une catégorie d'objets : ses attributs (les données) et ses méthodes (les comportements). Un objet, ou instance, est une réalisation concrète d'une classe, créée par le constructeur. Plusieurs objets d'une même classe partagent la même structure mais possèdent chacun leurs propres valeurs d'attributs.
En Python, le constructeur est la méthode spéciale __init__. Le premier paramètre de toute méthode est self, qui désigne l'instance sur laquelle la méthode est appelée. On mémorise une donnée d'un objet en écrivant self.attribut = valeur ; sans le préfixe self., on créerait une simple variable locale détruite à la fin de la méthode, et la donnée serait perdue.
L'encapsulation consiste à regrouper données et méthodes dans l'objet et à masquer les détails internes : le code extérieur passe par les méthodes, ce qui garantit la cohérence de l'objet.
Squelette d'une classe Python :
class NomClasse: def __init__(self, parametre): self.attribut = parametre # attribut d'instance def methode(self): return self.attribut # self = instance courante
Création et utilisation d'un objet :
obj = NomClasse(10) # appelle __init__ obj.methode() # self vaut obj automatiquement
1. Repérer dans l'énoncé les attributs (données) et les méthodes (actions).
2. Écrire __init__ qui initialise tous les attributs avec self..
3. Pour chaque méthode, déterminer ce qu'elle lit/modifie sur self et ce qu'elle renvoie.
4. Tester sur des cas simples : création, appels successifs, cas limites.
5. Ajouter __str__ si un affichage lisible est demandé.
self en paramètre d'une méthode ou devant un attribut : la donnée serait alors une simple variable locale, perdue à la fin de la méthode.Compteur est la classe, c = Compteur() est un objet.__init__ ne « renvoie » rien (pas de return valeur) : il initialise l'objet.À l'écrit, on demande de définir une classe à partir d'une description : identifiez bien attributs et méthodes, écrivez un constructeur propre, gérez les contraintes (par exemple solde non négatif) dans les méthodes plutôt que de laisser l'utilisateur modifier directement les attributs. À l'épreuve pratique, respectez exactement les noms de méthodes imposés par le sujet, sans quoi les tests automatiques échouent. Savoir tracer l'exécution d'un petit programme objet (que vaut tel attribut après tels appels ?) est régulièrement testé : déroulez méthodiquement chaque appel en notant la valeur de chaque attribut. Enfin, citer l'encapsulation et la convention de l'underscore montre une bonne compréhension du paradigme objet.