Encapsulation

Introduction

Toutes les théories de programmation orientée objet vue jusqu’ici nous permettent d’arriver à un concept fondamental de ce type de programmation. On appelle ce concept l’encapsulation.

Qu’est-ce que l’encapsulation

En programmation orientée objet, l’encapsulation permet de créer des classes de qualité, fiables et permettant la réutilisation de code. Pour respecter le principe d’encapsulation d’une classe, il faut prendre en considérant les éléments suivants:

  • Les classes sont séparées en fonction des données qu’elles contiennent;
  • Tous les mécanismes permettant la manipulation des données de la classe doivent, au maximum, être placés dans la classe;
  • Seuls les mécanismes qui doivent être accessibles aux clients le sont (l’interface est minimale);
  • La classe a la responsabilité de l’intégrité de ses données;
  • Une classe doit être développée de manière indépendante des autres classes d’un système (sauf pour les liens que la classe est enfant ou client d’une autre classe)

À noter

Il est important de voir que, malgré son importance, l’encapsulation n’est pas une mécanique de programmation orientée objet en tant que telle, mais bien un guide afin de créer le meilleur « design » possible.

Quelques petits trucs

  • Lorsqu’une mécanique est créée, toujours se poser la question: « quelle classe devrait avoir la responsabilité de cette mécanique? »
  • Lorsqu’on crée une méthode ou un attribut dans une classe, se poser la question: « qui devrait avoir accès à cette méthode ou à cet attribut? »
  • Lorsqu’on crée une classe, toujours se poser la question: « comment le client peut-il briser ma classe? »
  • Ne pas oublier qu’une classe représente un objet (une instance) et non un utilitaire de gestion. Par exemple, la classe « Pomme » sert à représenter « une pomme » et non pas à gérer « des pommes ».
  • Beaucoup de code similaire entre différentes classes veut généralement dire qu’il devrait y avoir un ancêtre commun entre ces deux classes.

Retour

 


Auteur: Louis Marchand
Creative Commons License
Sauf pour les sections spécifiées autrement, ce travail est sous licence Creative Commons Attribution 4.0 International.