Encapsulation : définition et importance

-
2
 m de lecture
-
encapsulation

L'encapsulation est un concept important en programmation orientée objet. Découvrez tout ce qu'il y a à connaître à son sujet.

L’encapsulation est un mécanisme consistant à rassembler les données et les méthodes au sein d’une structure en cachant l’implémentation de l’objet, c’est-à-dire en empêchant l’accès aux données par un autre moyen que les services proposés. L’encapsulation permet donc de garantir l’intégrité des données contenues dans l’objet. Ainsi, si l’on veut protéger des informations contre une modification inattendue, on doit se référer au principe d’encapsulation.

Le masquage des informations

En Java, comme dans beaucoup de langages de programmation orientée objet, les classes, les attributs et les méthodes bénéficient de niveaux d’accessibilité, qui indiquent dans quelles circonstances on peut accéder à ces éléments.

L’utilisateur d’une classe n’a pas forcément besoin de savoir de quelle manière sont structurées les données dans l’objet, soit leur implémentation. Ainsi, en interdisant à l’utilisateur de modifier directement les attributs, et en l’obligeant à utiliser les fonctions définies pour les modifier (appelées interfaces), on est capable de s’assurer de l’intégrité des données. On pourra par exemple s’assurer que le type des données fournies est conforme aux attentes, ou encore que les données se trouvent bien dans l’intervalle attendu.

L’encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent les droits d’accès aux données selon que l’on y accède par une méthode de la classe elle-même, d’une classe héritière, ou bien d’une classe quelconque. Il existe quatre niveaux de visibilité :

  • Visibilité par défaut : aucun modificateur de visibilité n’est indiqué.
  • Visibilité publique : les fonctions de toutes les classes peuvent accéder aux données ou aux méthodes d’une classe définie avec le niveau de visibilité « public ». Il s’agit du plus bas niveau de protection des données.
  • Visibilité protégée : l’accès aux données est réservé aux fonctions des classes héritières, c’est-à-dire par les fonctions membres de la classe et des classes dérivées. Ainsi, Un attribut ou une méthode déclarée « protected » est accessible uniquement aux classes d’un package et à ses sous-classes même si elles sont définies dans un package différent.
  • Visibilité privée : l’accès aux données est limité aux méthodes de la classe elle-même. Il s’agit du niveau de protection des données le plus élevé

Comment choisir le niveau de visibilité des différents éléments d’une classe ?

La vraie difficulté réside donc dans la détermination du « bon » niveau de visibilité des différents éléments de la classe. De manière générale, il convient toujours d’essayer de protéger un maximum le code de l’extérieur et donc de définir le niveau d’accessibilité minimum possible. Ensuite, il va falloir s’interroger sur le niveau de sensibilité de chaque élément et sur les impacts que peuvent avoir chaque niveau d’accès à un élément sur le reste d’une classe tout en identifiant les différents autres éléments qui vont avoir besoin d’accéder à cet élément pour fonctionner.

Facebook
Twitter
LinkedIn

DataScientest News

Inscrivez-vous à notre Newsletter pour recevoir nos guides, tutoriels, et les dernières actualités data directement dans votre boîte mail.

Vous souhaitez être alerté des nouveaux contenus en data science et intelligence artificielle ?

Laissez-nous votre e-mail, pour que nous puissions vous envoyer vos nouveaux articles au moment de leur publication !

Newsletter icone
icon newsletter

DataNews

Vous souhaitez recevoir notre
newsletter Data hebdomadaire ?