Médaille
N°1 pour apprendre & réviser du collège au lycée.

Programmation orientée objet

Déjà plus de

1 million

d'inscrits !

Principes de la programmation objet

  • L’approche objet permet de créer des structures de données et d’y associer des fonctionnalités.
  • La principale caractéristique du paradigme objet est d’associer étroitement les données et le code pour les traiter (principe de l’encapsulation).
  • Cette encapsulation se matérialise par la définition d’une classe d’objets.
  • La classe objet établit les types de données et y associe des fonctionnalités communes.
  • Les objets individuels sont créés à partir de la classe, par un mécanisme appelé instanciation : l’objet devient l’instance de la classe dont il provient.
  • Dans la terminologie objet, les données sont appelées attributs, tandis que les fonctions associées sont appelées méthodes.
  • Une classe se définit à partir du mot-clé class suivi du nom de celle-ci (qui commence par une majuscule).
  • Dans le cas où le nom est composé, on utilise la convention dite « camel case ».

class ExempleComportantPlusieursMots:

pass

  • Les objets encapsulent des propriétés et des méthodes.
  • La méthode appelée __init__ est le constructeur de nos futurs objets. Elle sera automatiquement appelée au moment de la création des objets de la classe.
  • Les méthodes prennent un premier paramètre désignant l’objet individuel auquel elles s’appliquent. Par convention ce paramètre est appelé self en Python.
  • La syntaxe générale pour l’appel d’une méthode s’effectue selon le format suivant : objet.methode(arguments).
  • Si la méthode requiert des paramètres, les arguments correspondants doivent être présents entre les parenthèses.
  • Les chaînes de documentation (help()) contribuent, quand elles sont présentes, à informer sur la classe et ses méthodes.
  • L’intérêt de la programmation objet est la possibilité de disposer de méthodes communes à des objets distincts dont les valeurs d’attributs peuvent être différentes.

États internes des objets

  • Le paradigme de programmation fonctionnelle repose sur l’absence d’état des fonctions. Le résultat d’une fonction ne dépend que des arguments fournis en entrée.
  • Le paradigme de programmation objet permet une conservation d’états internes : les objets contiennent non seulement des fonctions, appelées méthodes, mais aussi des variables, appelées attributs.
  • On distingue :
  • les variables d’instance ;
  • et les variables de classe.
  • Les variables d’instance peuvent être définies au moment de l’instanciation de l’objet, mais il est possible de les définir à tout moment.
  • Les variables des objets, ou attributs d’instance, sont accessibles et modifiables avec la notation pointée.
  • Python permet également de déclarer librement des attributs non explicitement définis dans la classe.
  • Les variables d’instance sont stockées dans l’objet sous forme d’un dictionnaire.
  • Les variables peuvent également être définies au niveau de la classe (variables de classe).
  • Dans ce cas, elles sont communes à tous ses membres, et toute modification d’une variable de classe concernera l’ensemble des objets qui y sont rattachés (absence de self).
  • Certains langages obligent à utiliser des méthodes (accesseur ou mutateur) pour lire ou modifier les attributs des objets.
  • L’interface propose une forme d’accès aux données qui n’est pas nécessairement représentative de leur structure interne.
  • Cette structure interne peut donc être modifiée tout en conservant à l’identique l’interface.

Fonctionnalités

  • On distingue deux types de méthodes en Python :
  • les méthodes normales (qui correspondent aux fonctions de la programmation fonctionnelle) ;
  • et les méthodes spéciales (qui se distinguent par leur nommage entouré d’underscores = __methodespeciale__).
  • Ces dernières permettent d’étendre les fonctionnalités des objets en leur conférant des caractéristiques particulières (cf. __init__).
  • L’implémentation de la méthode spéciale __len__ va nous permettre de connaître la longueur d’un objet.

haiku = Poeme(petit_poeme_japonais)

print(len(haiku))
# affiche 60

  • Les méthodes spéciales nous permettent également d’implémenter des comparaisons entre objets, sous réserve de définir les méthodes correspondantes.
  • Cela implique l’implémentation des méthodes spéciales __lt__ (pour lesser than, soit « plus petit que ») et __le__ (pour lesser or equal, soit « plus petit que ou égal à »).