Pouvez-vous me dire quelle est la différence entre l' abstraction et l' information cachée dans le développement logiciel?
Je suis confus. L'abstraction cache l'implémentation des détails et les informations cachent des abstractions entières de quelque chose.
Mise à jour: j'ai trouvé une bonne réponse pour ces trois concepts. Voir la réponse séparée ci-dessous pour plusieurs citations tirées de là .
Réponses:
Allez à la source! Grady Booch dit (dans Object Oriented Analysis and Design, page 49, deuxième édition):
En d'autres termes: abstraction = l'objet extérieurement; encapsulation (obtenue grâce au masquage d'informations) = l'objet en interne,
Exemple: dans .NET Framework, la
System.Text.StringBuilder
classe fournit une abstraction sur un tampon de chaîne. Cette abstraction de tampon vous permet de travailler avec le tampon sans tenir compte de son implémentation. Ainsi, vous pouvez ajouter des chaînes au tampon sans tenir compte de la façon dont leStringBuilder
garde en interne des choses telles que le pointeur vers le tampon et la gestion de la mémoire lorsque le tampon est plein (ce qu'il fait avec l'encapsulation via le masquage d'informations).rp
la source
Le PO a mis à jour sa question avec plusieurs citations qu'il avait trouvées, notamment dans un article d'Edward V. Berard intitulé, «Abstraction, Encapsulation, and Information Hiding» . Je publie à nouveau une version légèrement élargie et reformatée de la mise à jour du PO, car elle devrait être une réponse à part entière.
(Toutes les citations sont tirées de l'article mentionné ci-dessus.)
Abstraction:
Masquage d'informations:
Encapsulation:
Conclusion:
la source
Information Hiding
(ou le masquage de l'implémentation), alors qu'un génériqueclass
réalise l'encapsulation et l'abstraction se fait via l'private
accèsAbstraction
cache les détails de l'implémentation en fournissant une couche sur la fonctionnalité de base.Information Hiding
cache les données affectées par cette implémentation. L'utilisation deprivate
etpublic
relève de cela. Par exemple, masquer les variables des classes.Encapsulation
c'est juste mettre toutes les données et fonctions similaires dans un groupe, par exempleClass
dans la programmation;Packet
dans le réseautage.Grâce à l'utilisation de classes, nous implémentons les trois concepts -
Abstraction
,Information Hiding
etEncapsulation
la source
Veuillez ne pas compliquer des concepts simples.
Encapsulation : le regroupement des données et des méthodes en une seule unité est l'encapsulation (par exemple, la classe)
Abstraction : C'est un acte de ne représenter que les choses essentielles sans inclure les détails de fond. (par exemple, interface)
POUR DES EXEMPLES ET PLUS D'INFORMATIONS GOTO:
http://thecodekey.com/C_VB_Codes/Encapsulation.aspx
http://thecodekey.com/C_VB_Codes/Abstraction.aspx
Définitions approuvées ici
PS: je me souviens aussi de la définition d'un livre nommé C ++ par Sumita Arora que nous avons lu en 11e classe;)
la source
Le sens de l'abstraction donné par l'Oxford English Dictionary (OED) le plus proche du sens voulu ici est «L'acte de séparation dans la pensée». Une meilleure définition pourrait être «Représenter les caractéristiques essentielles de quelque chose sans inclure l'arrière-plan ou les détails inutiles».
Le masquage d'informations est le principe selon lequel les utilisateurs d'un composant logiciel (comme une classe) n'ont besoin de connaître que les détails essentiels sur la façon d'initialiser et d'accéder au composant, et n'ont pas besoin de connaître les détails de l'implémentation.
Edit : Il me semble que l'abstraction est le processus consistant à décider quelles parties de l'implémentation doivent être cachées .
Donc, ce n'est pas l'abstraction VERSUS se cachant des informations. C'est une information qui cache l'abstraction de VIA.
la source
Abstraction
L'abstraction est un acte de représentation des détails essentiels sans inclure les détails d'arrière-plan. Une classe abstraite n'a que des signatures de méthode et la classe d'implémentation peut avoir sa propre implémentation, de cette manière les détails complexes seront cachés à l'utilisateur. L'abstraction se concentre sur la vue extérieure. En d'autres termes, l'abstraction est la séparation des interfaces de l'implémentation réelle.
Encapsulation
L'encapsulation explique la liaison des données membres et des méthodes en une seule unité. La dissimulation d'informations est le principal objectif de l'encapsulation. L'encapsulation est réalisée en utilisant des spécificateurs d'accès tels que private, public, protected. Les variables de membre de classe sont rendues privées afin qu'elles ne puissent pas être accessibles directement au monde extérieur. L'encapsulation se concentre sur la vue intérieure. En d'autres termes, l'encapsulation est une technique utilisée pour protéger les informations d'un objet de l'autre objet.
la source
L'abstraction cache les détails de l'implémentation comme vous le dites.
Vous abstenez quelque chose à un point suffisamment élevé pour que vous n'ayez qu'à faire quelque chose de très simple pour effectuer une action.
Le masquage d'informations cache les détails de mise en œuvre. La programmation est difficile. Vous pouvez avoir beaucoup de choses à gérer et à gérer. Il peut y avoir des variables que vous souhaitez / devez suivre de très près. Le masquage des informations garantit que personne ne casse accidentellement quelque chose en utilisant une variable ou une méthode que vous avez exposée publiquement.
Ces 2 concepts sont très étroitement liés dans la programmation orientée objet.
la source
Abstraction - C'est le processus d'identification des caractéristiques essentielles d'un objet sans inclure les détails non pertinents et fastidieux.
Encapsulation - Il s'agit du processus de regroupement des données et des fonctions manipulant ces données dans une seule unité.
L'abstraction et l'encapsulation sont des concepts liés mais complémentaires.
L'abstraction est le processus. L'encapsulation est le mécanisme par lequel l'abstraction est implémentée.
L'abstraction se concentre sur le comportement observable d'un objet. L'encapsulation se concentre sur l'implémentation qui donne lieu à ce comportement.
Masquage d'informations - Il s'agit du processus de masquage des détails d'implémentation d'un objet. C'est le résultat de l'encapsulation.
la source
Encapsulation: la liaison des données membres et des fonctions membres ensemble est appelée encapsulation. l'encapsulation se fait par classe. abstraction: masquer les détails de l'implémentation de l'utilisation du formulaire ou de la vue est appelé abstraction. ex: int x; nous ne savons pas comment int fonctionnera en interne. mais nous savons que int fonctionnera. c'est de l'abstraction.
la source
Abstraction: L' abstraction est le concept / la technique utilisée pour identifier ce que devrait être la vue externe d'un objet. Rendre uniquement l'interface requise disponible.
Dissimulation de l'information: elle est complémentaire à l'abstraction, car grâce à la dissimulation de l'information, l'abstraction est réalisée. Cacher tout le reste sauf la vue extérieure.
Encapsulation: liaison des données et des fonctions associées dans une unité. Il facilite l'abstraction et la dissimulation d'informations. Permettre à des fonctionnalités telles que l'accès aux membres d'être appliquées sur l'unité pour obtenir l'abstraction et le masquage des informations
la source
Voir l'article de Joel sur la loi des abstractions baveuses
JoelOnsoftware
Fondamentalement, l'abstraction vous donne la liberté de penser à des concepts de niveau supérieur. Une analogie non liée à la programmation est que la plupart d'entre nous ne savent pas d'où vient notre nourriture ni comment elle est produite, mais le fait que nous n'ayons (généralement) pas à nous en préoccuper nous libère pour faire d'autres choses, comme programmation.
Quant à la dissimulation d'informations, je suis d'accord avec le brouillage.
la source
En très bref
Encapsulation : - Masquage d'informations
Abstraction : - Masquage de la mise en œuvre
Abstraction
vous permet de vous concentrer surwhat the object does
tandis que l'encapsulation signifiehow an object works
la source
L'abstraction vous permet de traiter un processus complexe comme un processus simple. Par exemple, l'abstraction standard "fichier" traite les fichiers comme un tableau contigu d'octets. L'utilisateur / développeur n'a même pas à penser aux problèmes de clusters et de fragmentation. (L'abstraction apparaît normalement sous forme de classes ou de sous-programmes.)
Le masquage d'informations consiste à protéger vos abstractions contre les utilisateurs malveillants / incompétents. En restreignant le contrôle de certains états (allocations de disque dur, par exemple) au développeur d'origine, d'énormes quantités de traitement des erreurs deviennent redondantes. Si personne d'autre que le pilote du système de fichiers ne peut écrire sur le disque dur, alors le pilote du système de fichiers sait exactement ce qui a été écrit sur le disque dur et où. (La manifestation habituelle de ce concept est
private
et desprotected
mots - clés dans les langues OO.)la source
Pour faire abstraction de quelque chose, nous devons cacher le détail ou masquer le détail de quelque chose dont nous avons besoin pour l'abstraire. Mais les deux peuvent être obtenus par encapsulation.
Ainsi, la dissimulation d'informations est un objectif, l'abstraction est un processus et l'encapsulation est une technique.
la source
L'abstraction signifie simplement la technique dans laquelle seuls les détails essentiels du logiciel sont rendus visibles à l'utilisateur pour aider l'utilisateur à utiliser ou à utiliser un logiciel, ainsi les détails de mise en œuvre de ce logiciel ne sont pas affichés (sont rendus invisibles). L'encapsulation est la technique qui permet aux emballages de contenir un ou plusieurs éléments et, par conséquent, certaines informations (en particulier les détails du programme) sont devenues visibles et d'autres non visibles pour l'utilisateur, de sorte que l'encapsulation est réalisée par le masquage des informations. En résumé. L'abstraction est pour le comportement observable (en externe) et l'encapsulation est pour l'invisibilité (en interne) mais ces deux sont vraiment complémentaires.
la source
Juste en ajoutant plus de détails sur InformationHiding , trouvé Ce lien est vraiment une bonne source avec des exemples
la source
L'abstraction et l'encapsulation sont deux des quatre concepts de base de la POO qui vous permettent de modéliser des choses du monde réel en objets afin que vous puissiez les implémenter dans votre programme et votre code. De nombreux débutants se confondent entre l'abstraction et l'encapsulation car ils se ressemblent tous les deux. Si vous demandez à quelqu'un ce qu'est l'abstraction, il vous dira que c'est un concept de POO qui se concentre sur des informations pertinentes en cachant des détails inutiles, et lorsque vous posez des questions sur l'encapsulation, beaucoup vous diront que c'est un autre concept de POO qui cache les données du monde extérieur. Les définitions ne sont pas fausses car l'abstraction et l'encapsulation cachent quelque chose, mais la principale différence réside dans l'intention.
L'abstraction cache la complexité en vous donnant une image plus abstraite, une sorte de vue de 10000 pieds, tandis que l'encapsulation cache le travail interne afin que vous puissiez le changer plus tard. En d'autres termes, l'abstraction masque les détails au niveau de la conception, tandis que l'encapsulation masque les détails au niveau de l'implémentation.
la source
Après avoir lu toutes les réponses ci-dessus une par une, je ne peux pas m'empêcher de poster cela
L'encapsulation est cependant assez claire d'en haut ->
wiki de référence
la source
J'étais moi aussi très confus à propos des deux concepts d'abstraction et d'encapsulation. Mais quand j'ai vu l' article d'abstraction sur myjavatrainer.com, il est devenu clair pour moi que l'abstraction et l'encapsulation sont des pommes et des oranges, vous ne pouvez pas vraiment les comparer car les deux sont nécessaires.
L'encapsulation est la façon dont l'objet est créé et l'abstraction est la façon dont l'objet est vu dans le monde extérieur.
la source
Encapsulation: liaison des données et des méthodes qui agissent dessus. cela permet de masquer les données de toutes les autres méthodes dans d'autres classes. exemple:
MyList
classe qui peut ajouter un élément, supprimer un élément, et supprimer tous les éléments les méthodesadd
,remove
etremoveAll
agir sur la liste (un tableau privé) qui ne peuvent pas être directement accessible depuis l'extérieur.Abstraction: cache le comportement et les données non pertinents. La manière dont les éléments sont réellement stockés, ajoutés ou supprimés est masquée (abstraite). Mes données peuvent être conservées dans un simple tableau, ArrayList, LinkedList, etc. De plus, la manière dont les méthodes sont implémentées est cachée de l'extérieur.
la source
Encapsulation - renforcer l'accès aux données internes de manière contrôlée ou empêcher l'accès direct aux membres.
Abstraction - Le masquage des détails de mise en œuvre de certaines méthodes est appelé abstraction
Comprenons à l'aide d'un exemple: -
maintenant, pour l'abstraction, définissez une méthode accessible uniquement et l'utilisateur ne sait pas quel est le corps de la méthode et comment cela fonctionne. Considérons l'exemple ci-dessus, nous pouvons définir une zone de méthode qui calcule l'aire du rectangle.
Désormais, chaque fois qu'un utilisateur utilise la méthode ci-dessus, il obtiendra simplement la surface et non la manière dont elle est calculée. Nous pouvons considérer un exemple de méthode println (), nous savons juste qu'elle est utilisée pour l'impression et nous ne savons pas comment elle imprime les données. J'ai écrit un blog en détail, vous pouvez voir le lien ci-dessous pour plus d'informations abstraction vs encapsulation
la source
Il convient de noter que ces termes ont des définitions IEEE normalisées, qui peuvent être recherchées sur https://pascal.computer.org/ .
abstraction
informations cachées
encapsulation
la source