Question

Pouvez-vous me dire quelle est la différence entre abstraction et informations cachées dans le développement de logiciels ?

Je suis confus.L'abstraction cache la mise en œuvre des détails et les informations cachant des résumés Détails entiers de quelque chose.

Mise à jour: J'ai trouvé une bonne réponse à ces trois concepts. Voir la réponse séparée ci-dessous pour plusieurs citations tirées de .

Était-ce utile?

La solution

Allez à la source !Grady Booch dit (dans Object Oriented Analysis and Design, page 49, deuxième édition) :

L'abstraction et l'encapsulation sont des concepts complémentaires :abstraction se concentre sur le comportement observable d’un objet...encapsulation se concentre sur la mise en œuvre qui donne lieu à ce comportement...L’encapsulation est le plus souvent réalisée par le masquage de l’information, ce qui est le processus qui consiste à cacher tous les secrets de l’objet qui ne contribuent à ses caractéristiques essentielles.

Autrement dit:abstraction = l'objet extérieurement ;encapsulation (réalisée grâce à la dissimulation d'informations) = l'objet en interne,

Exemple:Dans le .NET Framework, le System.Text.StringBuilder La classe fournit une abstraction sur un tampon de chaîne.Cette abstraction du tampon vous permet de travailler avec le tampon sans vous soucier de son implémentation.Ainsi, vous pouvez ajouter des chaînes au tampon sans vous soucier de la façon dont le StringBuilder garde en interne une trace de 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 des informations).

rp

Autres conseils

Le PO a mis à jour sa question avec plusieurs citations qu'il avait trouvées, notamment dans un article d'Edouard V.Bérard a intitulé "Abstraction, encapsulation et dissimulation d'informations"..Je republie une version légèrement étendue 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:

"Un point de confusion concernant l'abstraction est son utilisation à la fois comme processus et comme entité.L'abstraction, en tant que processus, désigne l'extraction des détails essentiels sur un élément ou un groupe d'éléments, tout en ignorant les détails non essentiels.L'abstraction, en tant qu'entité, désigne un modèle, une vue ou une autre représentation ciblée d'un élément réel.

Masquage des informations :

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

"L'abstraction peut être […] utilisée comme technique pour identifier les informations qui doivent être cachées."

"La confusion peut survenir lorsque les gens ne parviennent pas à faire la distinction entre la dissimulation d'informations et une technique (par exemple, l'abstraction) utilisée pour aider à identifier quelle information doit être cachée."

Encapsulation :

"Cela […] fait référence à la construction d'une capsule, dans le cas d'une barrière conceptuelle, autour d'un ensemble de choses." — [Wirfs-Brock et al, 1990]

"En tant que processus, l'encapsulation désigne l'acte d'enfermer un ou plusieurs éléments dans un conteneur […].L'encapsulation, en tant qu'entité, fait référence à un package ou à une enceinte qui contient (contient, enferme) un ou plusieurs éléments.

Si l’encapsulation était « la même chose que la dissimulation d’informations », alors on pourrait faire valoir que « tout ce qui a été encapsulé a également été caché ». Ce n’est évidemment pas vrai.

Conclusion:

"L'abstraction, la dissimulation d'informations et l'encapsulation sont des concepts très différents, mais très liés.On pourrait affirmer que l’abstraction est une technique qui nous aide à identifier quelles informations spécifiques doivent être visibles et quelles informations doivent être cachées.L'encapsulation est alors la technique permettant de conditionner les informations de manière à masquer ce qui devrait l'être et à rendre visible ce qui est censé être visible.

Abstraction cache les détails d’implémentation en fournissant une couche sur les fonctionnalités de base.

Information Hiding cache les données qui sont affectées par cette implémentation.Utilisation de private et public relève de cela.Par exemple, masquer les variables des classes.

Encapsulation consiste simplement à mettre toutes les données et fonctions similaires dans un groupe, par exemple Class en programmation; Packet en réseau.

Grâce à l'utilisation de classes, nous implémentons les trois concepts : Abstraction, Information Hiding et Encapsulation

S’il vous plaît, ne compliquez pas les concepts simples.

Encapsulation :Le regroupement des données et des méthodes dans une seule unité est l'encapsulation (par ex.Classe)

Abstraction :Il s'agit d'un acte consistant à représenter uniquement les choses essentielles sans inclure les détails de fond.(par exemple.Interface)

POUR DES EXEMPLES ET PLUS D'INFOS, ALLEZ À :

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 d'un livre nommé C++ de Sumita Arora que nous avons lu en 11ème ;)

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 non essentiels ».

La dissimulation d'informations est le principe selon lequel les utilisateurs d'un composant logiciel (tel qu'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.

Modifier:Il me semble que l'abstraction est la processus de décider quelles parties de la mise en œuvre devraient être caché.

Ce n'est donc pas une abstraction CONTRE la dissimulation d'informations.Ce sont des informations qui cachent l'abstraction VIA.

Abstraction

L'abstraction est un acte consistant à représenter 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 l’objectif principal de l’encapsulation.L'encapsulation est réalisée en utilisant des spécificateurs d'accès tels que privé, public, protégé.Les variables membres de la classe sont rendues privées afin qu'elles ne puissent pas être directement accessibles 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.

L'abstraction cache les détails de la mise en œuvre comme vous le dites.

Vous faites abstraction de 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 consiste à masquer 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.

Abstraction - C’est le processus d’identification des caractéristiques essentielles d’un objet sans inclure les détails non pertinents et fastidieux.

Encapsulation - C'est le processus consistant à regrouper des données et des fonctions manipulant ces données en une seule unité.

L'abstraction et l'encapsulation sont des concepts liés mais complémentaires.

  1. L'abstraction est le processus.L'encapsulation est le mécanisme par lequel l'abstraction est implémentée.

  2. L'abstraction se concentre sur le comportement observable d'un objet.L'encapsulation se concentre sur la mise en œuvre qui donne lieu à ce comportement.

Masquage d'informations - C'est le processus de masquage des détails d'implémentation d'un objet.C'est le résultat de l'encapsulation.

Encapsulation :la liaison des données membres et des fonctions membres est appelée encapsulation.l'encapsulation se fait en classe.abstraction:masquer les détails de l'implémentation sous forme d'utilisation ou de la vue est appelé abstraction.ex:entier x ;nous ne savons pas comment int fonctionnera en interne.mais nous savons que int fonctionnera.c'est de l'abstraction.

Abstraction : L'abstraction est le concept/technique utilisé pour identifier quelle devrait être la vue externe d'un objet.Rendre disponible uniquement l’interface requise.

Masquage des informations : Il est complémentaire à l’abstraction, car l’abstraction est obtenue grâce à la dissimulation des informations.Cacher tout le reste sauf la vue extérieure.

Encapsulation : Est la 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 réaliser l'abstraction et la dissimulation des informations

Voir l'article de Joel sur la loi des abstractions qui fuient

JoëlOnsoftware

Fondamentalement, l’abstraction vous donne la liberté de penser à des concepts de niveau supérieur.Une analogie non programmatique 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'avons (généralement) pas à nous en soucier nous libère pour faire d'autres choses, comme la programmation.

Quant à la dissimulation d'informations, je suis d'accord avec le brouillage.

L'abstraction 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 limitant le contrôle de certains états (allocations de disque dur, par exemple) au développeur d'origine, d'énormes quantités de gestion 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 protected mots-clés dans les langages OO.)

Pour abstraire quelque chose, nous devons cacher les détails ou pour cacher les détails de quelque chose, nous devons l'abstraire.Mais les deux peuvent être réalisés par encapsulation.

Ainsi, la dissimulation d’informations est un objectif, l’abstraction est un processus et l’encapsulation est une technique.

Abstraction signifie simplement la technique dans laquelle seuls les détails essentiels du logiciel sont rendus visibles à l'utilisateur pour l'aider à utiliser ou à utiliser le logiciel, ainsi les détails de mise en œuvre de ce logiciel ne sont pas affichés (sont rendus invisibles).Encapsulation est la technique selon laquelle un package contient 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. L'encapsulation est donc réalisée en masquant les informations.En résumé. Abstraction est pour un comportement observable (en externe) et l'encapsulation est pour l'invisibilité (en interne) mais ces deux sont vraiment complémentaires.

J'ajoute simplement plus de détails autour InformationsMasquage, trouvé Ce lien est vraiment une bonne source avec des exemples

InformationsMasquage est l'idée selon laquelle une décision de conception doit être cachée au reste du système pour éviter un couplage involontaire.InformationHiding est un principe de conception. InformationsMasquage devrait informer la façon dont vous encapsuler des choses, mais bien sûr, ce n'est pas obligatoire.

Encapsulation est une fonctionnalité du langage de programmation.

Moi aussi, j'étais très confus au sujet des deux concepts d'abstraction et d'encapsulation.Mais quand j'ai vu le article sur les abstractions sur myjavatrainer.com, il m'est devenu clair 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 perçu dans le monde extérieur.

Après avoir lu toutes les réponses ci-dessus une par une, je ne peux pas m'empêcher de poster ça

l'abstraction implique la possibilité de définir des objets qui représentent des « acteurs » abstraits qui peuvent effectuer un travail, rendre compte et modifier leur état, et « communiquer » avec d'autres objets du système.

L'encapsulation est cependant assez claire vu d'en haut ->

Le terme encapsulation fait référence à la dissimulation des détails de l'état, mais étendre le concept de type de données des langages de programmation antérieurs pour associer le plus fortement le comportement aux données et normaliser la manière dont les différents types de données interagissent est le début de l'abstraction.

référence wiki

Encapsulation : les données contraignantes et les méthodes qui agissent sur elles.cela permet de masquer les données de toutes les autres méthodes des autres classes.exemple: MyList qui permet d’ajouter un élément, de supprimer un élément et de supprimer tous les éléments Les méthodes add, remove, et removeAll agir sur la liste (un tableau privé) qui n'est pas accessible directement de 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 tableau simple, ArrayList, LinkedList, etc.De plus, la manière dont les méthodes sont mises en œuvre est cachée de l’extérieur.

Encapsulation : garantir l'accès aux données internes de manière contrôlée ou empêcher l'accès direct aux membres.

Abstraction - Masquer les détails d'implémentation de certaines méthodes est connu sous le nom d'abstraction.

Comprenons à l'aide d'un exemple : -

class Rectangle
{
private int length;
private int breadth;// see the word private that means they cant be accesed from 
outside world.
 //now to make them accessed indirectly define getters and setters methods
void setLength(int length)
{  
// we are adding this condition to prevent users to make any irrelevent changes 
  that is why we have made length private so that they should be set according to 
   certain restrictions
if(length!=0)
{
 this.length=length
 }
void getLength()
{
 return length;
 }
 // same do for breadth
}

Maintenant, pour l’abstraction, définissez une méthode qui n’est accessible que et que l’utilisateur ne sait pas Quel est le corps de la méthode et comment fonctionne-t-elle ? Considérons l’exemple ci-dessus, nous pouvons définir une aire de méthode qui calcule l’aire du rectangle.

 public int area()
 {
  return length*breadth;
 }

Désormais, chaque fois qu'un utilisateur utilise la méthode ci-dessus, il obtiendra simplement la zone et non la manière dont elle est calculée.Nous pouvons considérer un exemple de méthode println() dont nous savons simplement 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'informationsabstraction vs encapsulation

Il convient de noter que ces termes ont des définitions IEEE standardisées, qui peuvent être recherchées sur https://pascal.computer.org/.

abstraction

  1. vue d'un objet qui se concentre sur les informations pertinentes pour un objectif particulier et ignore le reste des informations
  2. processus de formulation d'un point de vue
  3. processus de suppression de détails non pertinents pour établir un modèle simplifié, ou le résultat de ce processus

informations cachées

  1. technique de développement logiciel dans laquelle les interfaces de chaque module révèlent le moins possible sur le fonctionnement interne du module et dans laquelle les autres modules ne peuvent pas utiliser des informations sur le module qui ne figurent pas dans la spécification de l'interface du module
  2. confinement d'une décision de conception ou de mise en œuvre dans un seul module afin que la décision soit cachée aux autres modules

encapsulation

  1. technique de développement logiciel qui consiste à isoler une fonction système ou un ensemble de données et des opérations sur ces données au sein d'un module et à fournir des spécifications précises pour le module
  2. concept selon lequel l'accès aux noms, significations et valeurs des responsabilités d'une classe est entièrement séparé de l'accès à leur réalisation
  3. idée qu'un module a un extérieur distinct de son intérieur, qu'il a une interface externe et une implémentation interne
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top