L’encapsulation des attributs en programmation orientée objet

L’encapsulation est un des piliers de la Programmation Orientée Objet avec l’héritage et le polymorphisme. C’est aussi la technique la plus simple à mettre en oeuvre puisqu’elle constiste dans la plupart des langages, et c’est le cas en Java, à apposer le mot private afin de modifier la visibilité d’un membre de classe. C’est aussi la technique la plus importante et à cet égard les enjeux de l’encapsulation ne sont pas toujours bien compris.

Exemple :

public class PetiteCalculatrice {
	private double resultat = 0;

	public double additionner(double nb1, double nb2) {
		return resultat = nb1 + nb2 ;
	}

	public void effacer() {
		restultat = 0;
	}

	public double getResultat() {
		return resultat;
	}
}

Dans cet exemple, la variable d’état resultat a été encapsulée. C’est une bonne habitude d’encapsuler toutes les variables d’état par défaut. Mais voyons pourquoi le choix a été fait de ne pas rendre cette variable publique.

L’intérêt de la programmation orientée objet, ou paradigme classe/instance pour reprendre le terme de Craig Larman, est la possibilité d’écrire un code facilement réutilisable de sorte à ne pas réinventer la roue. Là je ne réinvente pas la roue, je vous montre juste comment remplir le coffre 😉 Seulement, lorsque vous écrivez du code avec l’intention de le réutiliser, l’idéal est que ce code soit sûr et qu’il ne soit pas à l’origine d’un bug qui obligerait à se replonger dans le code source. Le gain serait finalement nul.

L’idée du paradigme classe/instance est de modulariser le code en classes et de donner au développeur de chaque classe l’entière responsabilité de son bon fonctionnement. Bien sûr, il n’est pas toujours possible de prévoir toutes les situations et c’est pour ça qu’a été inventé le mécanisme des exceptions, mais ce n’est pas le sujet de ce post. Dans notre cas, nous proposons du code qui permet d’obtenir un résultat mathématique, il est de notre responsabilité de garantir la cohérence de ce résultat. Voilà pourquoi l’attribut de notre PetiteCalculatrice a été encapsulé : il est hors de question d’autoriser l’utilisateur de notre classe à injecter le résultat qu’il veut, ce résultat doit être uniquement celui obtenu par les opérations que nous avons implémenté, en l’occurence l’addition.

Ainsi, en encapsulant un attribut il est possible de choisir si celui-ci doit être accessible en lecture ou en écriture, et dans ce dernier cas de définir les conditions pour lesquelles les valeurs sont autorisées.

Pour terminer, et c’est sans doute l’aspect le plus important de l’encapsulation, le développeur est responsable du code qu’il fournit. Bien sûr il n’est pas responsable socialement, ou du moins cet aspect ne nous intéresse pas ici :p, mais, et cela revient d’une certaine manière à la même chose, il est responsable au regard des autres classes avec lesquelles celle qu’il a écrit collabore, ainsi que celles avec lequelles elle sera amené à collaborer. Cela en ne perdant jamais de vue que si on sait dans quel contexte on a écrit son code, on ne sait jamais celui dans lequel il sera appelé.

Publicités

1 Response to “L’encapsulation des attributs en programmation orientée objet”


  1. 1 reklama septembre 7, 2014 à 1:52

    Wonderful blog! Do you have any helpful hints for aspiring
    writers? I’m hoping to start my own website soon but I’m a little
    lost on everything. Would you recommend starting with a free platform like WordPress or go for a paid option? There are so many choices
    out there that I’m completely confused .. Any ideas? Bless you!


Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s





%d blogueurs aiment cette page :