178 votes

Informations d’abstraction VS VS Encapsulation de masquage

Pouvez-vous me dire quelle est la différence entre l'ABSTRACTION et de se CACHER de l'INFORMATION dans le développement de logiciels?

Je suis confus d'abstraction masque les détails de la mise en œuvre et se cacher de l'information résumés de l'ensemble des détails de quelque chose.

Mise à jour: j'ai trouvé une bonne solution pour ces trois concepts. Voir la réponse distincte ci-dessous pour plusieurs citations prises à partir de .

161voto

rp. Points 9997

Aller à la source! Grady Booch dit (dans l'Analyse Orientée Objet et des Design, page 49, deuxième édition):

L'Abstraction et d'encapsulation sont des concepts complémentaires: l'abstraction se concentre sur les comportements observables d'un objet, encapsulation... met l'accent sur la mise en œuvre et qui donne lieu à ce comportement... l'encapsulation est le plus souvent réalisé par se cacher de l'information, qui est le processus de cacher tous les secrets de l'objet qui ne sont pas contribuer à ses caractéristiques essentielles.

En d'autres termes: l'abstraction = l'objet externe; encapsulation (réalisé par se cacher de l'information) = l'objet en interne,

Exemple: Dans l' .NET Framework, l' System.Text.StringBuilder classe fournit une abstraction au-dessus d'un tampon de chaîne. Ce tampon d'abstraction permet de travailler avec le tampon sans égard pour sa mise en œuvre. Ainsi, vous êtes en mesure de concaténer des chaînes de caractères dans le tampon sans égard à l'utilisation de l' StringBuilder en interne conserve la trace des choses telles que le pointeur de la mémoire tampon et la gestion de la mémoire lorsque la mémoire tampon est plein (ce qu'il fait avec l'encapsulation par se cacher de l'information).

rp

91voto

stakx Points 29832

L'OP mis à jour sa question avec plusieurs citations qu'il avait trouvé, à savoir dans un article de Edward V. Berard intitulé, "l'Abstraction, l'Encapsulation, et se Cacher de l'Information". Je suis re-poster un légèrement agrandi et restructuré version de l'OP de la mise à jour, puisqu'il devrait être une réponse dans son propre droit.

(Toutes les citations sont extraites de l'article mentionné ci-dessus.)

Abstraction:

"D'un point de confusion quant à l'abstraction est son utilisation à la fois comme processus et d'une entité. L'Abstraction, en tant que processus, désigne l'extraction de l'essentiel des informations sur un élément, ou un groupe d'éléments, tout en ignorant la inessentielle de détails. L'Abstraction, comme une entité, indique un modèle, un point de vue, ou de quelque autre représentation d'un élément réel."

Se Cacher De L'Information:

"Son interface ou la définition a été choisie pour révéler le moins possible sur son fonctionnement interne." — [Parnas, 1972b]

"L'Abstraction peut être [...] utilisé comme une technique pour identifier les informations qui doivent être cachés."

"La Confusion peut se produire quand les gens ne font pas la distinction entre la dissimulation de l'information, et une technique (par exemple, l'abstraction) qui est utilisé pour aider à identifier les informations qui doivent être cachés."

Encapsulation:

"Il [...] se réfère à la construction d'une capsule, dans le cas d'une barrière conceptuelle, autour de la collecte des choses." — [Wirfs-Brock et coll., 1990]

"En tant que processus, l'encapsulation, l'acte de protection d'un ou plusieurs éléments au sein d'un [...] conteneur. L'Encapsulation, comme une entité, se réfère à un package ou un boîtier qui tient (contient, contient) un ou plusieurs éléments."

"Si l'encapsulation était" la même chose que de se cacher de l'information", alors on peut faire l'argument que " tout ce qui a été encapsulé a également été caché. Ce n'est évidemment pas vrai."

Conclusion:

"De l'Abstraction, de se cacher de l'information, et l'encapsulation sont très différents, mais très liés, les concepts. On pourrait dire que l'abstraction est une technique qui nous aide à identifier quelle information spécifique doit être visible, et l'information qui doit être caché. L'Encapsulation est alors la technique pour l'emballage de l'information de manière à cacher ce qui doit être caché, et de rendre visible ce qui est destiné à être visible."

58voto

Shashwat Points 691

Abstraction est de cacher les détails de mise en œuvre en fournissant une couche sur les fonctionnalités de base.

Information Hiding est de cacher les données qui en est affectée par la mise en œuvre. L'utilisation d' private et public vient en vertu de la présente. Par exemple, en cachant les variables de classes.

Encapsulation est tout simplement le regroupement de toutes les données similaires et de fonctions dans un groupe e.g Class dans la programmation; Packet dans le réseautage.

Grâce à l'utilisation de Classes, nous mettons en œuvre tous les trois concepts - Abstraction, Information Hiding et Encapsulation

34voto

Rashy Points 323

Merci de ne pas compliquer les concepts simples.

Encapsulation : Habillage de données et méthodes en une seule unité d'Encapsulation (par exemple, la Classe)

L'Abstraction : C'est un acte de représenter l'essentiel des choses sans y compris les détails de l'arrière plan. (par exemple, l'Interface)

POUR DES EXEMPLES ET PLUS D'INFOS GOTO :

http://thecodekey.com/C_VB_Codes/Encapsulation.aspx

http://thecodekey.com/C_VB_Codes/Abstraction.aspx

Définitions approuvées ici

P. S.: je me souviens aussi de la définition à partir d'un livre nommé C++ par Sumita Arora qui nous lisent dans la 11ème classe ;)

6voto

jamting Points 893

Le sens de l'abstraction donné par le Dictionnaire Oxford English dictionary (OED) les plus proches du sens voulu ici est "L'acte de se séparer de la pensée". Une meilleure définition de " Représentant les caractéristiques essentielles de quelque chose sans y compris l'arrière-plan ou inessentielle détail.'

Se cacher de l'Information est le principe que les utilisateurs d'un composant logiciel (comme une classe) ont besoin de connaître l'essentiel des détails de la façon d'initialiser et d'accéder au composant, et n'ont pas besoin de connaître les détails de la mise en œuvre.

Edit: j'me semble que l'abstraction est le processus de décider quelles parties de la mise en œuvre qui doit être caché.

Donc ce n'est pas l'abstraction RAPPORT à se cacher de l'information. C'est se cacher de l'information VIA l'abstraction.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X