Approche OO – Encapsulation

Encapsulation is important, but the reason why it is important is more important. Encapsulation helps us reason about our code – Michael Feathers (via https://twitter.com/CodeWisdom/status/935991259499556866)

Qu'est-ce que l'encapsulation? Je disserte un peu sur la chose dans ../Orthogonal/Etre-OO.html#encapsulation, mettant en relief l'importance de l'encapsulation dans une approche OO et définissant sommairement le sens que je donne à ce terme.

Dans ce texte, j'approche en effet l'encapsulation sous l'angle de la responsabilité qu'a un objet, en particulier pour ce qui est de sa propre intégrité, dans la mesure de ses possibilités bien sûr, du début à la fin de son existence. Je complète en rappelant que, de manière plus formelle, qu'un objet garantisse son intégrité signifie qu'il garantisse le respect de ses invariants. Qu'un objet se comporte de manière reponsable signifie aussi qu'il nettoie les ressources qu'il se sera appropriées au cours de son existence (la finalisation, idéalement déterministe, qui manque cruellement à certains langages).

La maxime » gardez privé ce qui devrait l'être « est un bon point de départ pour qui débute son apprentissage de l'approche OO, mais il ne faut pas croire que l'encapsulation débute et termine avec les qualifications de sécurité; il est possible d'imposer une encapsulation stricte dans un langage qui ne serait pas OO par des techniques de programmation comme l'imposition d'interfaces ou l'adoption d'une approche client/ serveur par exemple.

Dans cet article, je prendrai principalement mes éléments techniques et syntaxiques du langage C++, mais je ferai aussi des incursions dans le monde des plateformes Java et .NET à l'occasion.

Qu'est-ce que l'encapsulation?

On s'intéresse à l'encapsulation dans le cas de structures de données (il faut qu'il y ait » quelque chose « à encapsuler, après tout, peu importe ce que c'est). D'office, on ne se préocuppe habituellement pas de parler d'encapsulation dans le cas d'un type primitif tel qu'un int ou un double.

Encapsulation et qualifications d'accès

 

La questions des accesseurs et des mutateurs

 

À ce sujet, Savvas Stephanides offre une opinion personnelle quant à l'importance des accesseurs et des mutateurs. Sans que ce soit incorrect, ça manque un peu de nuances. Cela dit, c'est un point de départ : http://savthecoder.com/blog-getters-and-setters-why-do-we-need-them

Texte de 2012 qui prétend que les accesseurs constituent en fait un bris d'encapsulation : http://blog.whitemagicsoftware.com/accessors-there-and-back-again/

En 2016, Greg Jorgensen nous avertit des défauts d'une approche naïve reposant sur des accesseurs et des mutateurs : http://typicalprogrammer.com/doing-it-wrong-getters-and-setters/

La question de l'amitié

 

Une foire aux questions de qualité sur le sujet : http://www.parashift.com/c++-faq-lite/friends.html

Encapsulation XYZ

 

 

Bris d'encapsulation

 

Lectures complémentaires

Quelques liens pour enrichir le propos :


Valid XHTML 1.0 Transitional

CSS Valide !