Discuter:Encapsulation (programmation)

Un article de Wikipédia, l'encyclopédie libre.

voici mes commentaires au sujet de l'encapsulation en informatique, la definition que vous donnez ne me convient pas du tout !

voici un article de référence :

http://www.tonymarston.net/php-mysql/good-bad-oop.html

  • Encapsulation is not information hiding by Wm. Paul Rogers of Java World
  • Abstraction, Encapsulation, and Information Hiding by Edward V. Berard of The Object Agency


l'encapsulation en informatique, c'est

  • rassembler dans une meme structure (entité, classe, c'est selon) les traitements (méthodes) et les données (attributs).

l'encapsulation, ce n'est en aucun cas :

  • assurer la protection des données : données privée, publique ...
  • cacher l'implémentation : acceder aux données par le biais de méthodes, plutot que directement aux attributs.

la vision orientée C++ des concepts objets, du vocabulaire C++ a tendance parfois à biaiser les conversions. La richesse du langage C++ qui est aussi sa compléxité a pour effet de reléguer certains langages en seconde zone, je pense en particulier a php et python.

Marc.

Je suis d'accord sur les premières intentions de l'encapsulation (rassembler dans une même structure). Mais comme cela va de pair avec la réutilisabilité d'une classe, il est important de distinguer les comportements interne et externe et, pour arriver à cela, la dissimulation des données membres et de l'implémentation est la technique la plus souvent employée. JonathanIlias 10 nov 2004 à 14:45 (CET)

Je suis d'accord pour dire que le lien entre encapsulation et dissimulation des données est très fort, mais ce n'est pas la même chose! Par exemple Smalltalk permet l'encapsulation mais pas la dissimulation des informations et il est consideré comme le premier language de POO. Je suis d'accord avec Marc, on devrait appeler un chat un chat et pas tout mélanger sous prétexte que dans une famille de language (C++/Java/...) ça va ensemble ...

Bien sur le sujet est débattable, mais la précision et la clareté devraient être le but d'une encyclopédie, non?

C'est pas dur de faire qq recherches pour voir que beaucoup de gens font la distinction :

En plus, je me documente sur ce sujet car je voulait écrire quelquechose dessus, et j'ai relevé environ 7 niveaux de contrôle d'accès:

  • objet: strict private (Delphi)
  • class: private (C++, Java, ...)
  • herité: classe et sous-classes uniquement (protected en C++),
  • unité: package, unit, namespace (implicite en Java)
  • groupe associé: herité+unité (protected en Java)
  • libre: public (C++, Java, ...)
  • meta-accès: RTTI (published en Delphi, implicite en Smalltalk)

Et ca c'est qq heures de recherche, j'ai pas encore étudié assez de language pour avoir un panorama assez complet ... Quand j'aurai finit, je modifierai peut etre aussi l'article de wikipedia, car il est est très léger ...

Les articles en anglais sont plus informatifs ...

Loïc