web-dev-qa-db-fra.com

encapsulation vs abstraction exemple du monde réel

Pour un exemple d'encapsulation, je peux penser à l'interaction entre un utilisateur et un téléphone portable. L'utilisateur n'a pas besoin de connaître le fonctionnement interne du téléphone mobile pour fonctionner. Il s'agit donc d'une abstraction. Mais quelle est la place de l'encapsulation dans cet exemple? Quelqu'un pourrait-il s'il vous plaît faire la lumière sur cela?

39
crowso

Encapsulation est un moyen de réaliser "masquage d'informations" donc, suivant votre exemple, vous n'avez pas "devez connaître le fonctionnement interne du téléphone " avec ça. Vous disposez d'un interface pour utiliser le comportement du périphérique sans connaître les détails de la mise en œuvre.

Abstraction de l'autre côté, peut être expliqué comme la possibilité d'utiliser le même interface _ pour différents objets. Différentes implémentations de la même interface peuvent exister. Les détails sont cachés par encapsulation.

67
davioooh

Abstraction : vous n'acheterez jamais un "appareil", mais achetez toujours quelque chose de plus spécifique: iPhone, GSII, Nokia 3310 ... Ici, l'iPhone, GSII et N3310 sont des objets concrets, l'appareil est abstrait.

Encapsulation : vous avez plusieurs périphériques, tous dotés d'un port USB. Vous ne savez pas quel type de circuit imprimé il y a, vous devez savoir que vous pourrez y brancher un câble USB.

L'abstraction est un concept autorisé par l'encapsulation. Mon exemple n'était pas le meilleur (il n'y a pas de lien réel entre les deux blocs).

Vous pouvez faire de l'encapsulation sans utiliser d'abstraction, mais si vous voulez utiliser une abstraction dans vos projets, vous aurez besoin de l'encapsulation.

59
zessx

En termes généraux, l’abstraction ne fait que masquer les éléments complexes qui se cachent derrière une procédure donnée pour que celle-ci paraisse simple.
Exemple: Monitor ON/OFF :: - L'utilisateur n'a pas besoin d'en savoir plus sur le fonctionnement de toutes les puces qui se produisent lorsque Monitor est allumé ou éteint ... Tout ce qu'il a besoin de savoir est activé ON-Monitor est activé et activé OFF-Monitor est désactivé ...

Ou Mieux vaut chercher une voiture - Tout le monde sait qu’il existe une machine à engrenages spéciale qui change l’engrenage, personne ne se soucie de savoir quelles fonctionnalités sont soumises à un changement d’engrenage.

Ainsi, si un développeur fournit une bonne abstraction, les utilisateurs ne seront pas tentés de jeter un coup d'œil sur les mécanismes internes de l'objet.

L'abstraction est obtenue en rendant la classe abstraite ayant une ou plusieurs méthodes abstraites. Ce qui n’est rien d’autre qu’une caractéristique essentielle qui devrait être mise en œuvre par la classe l’étendant .e.g. lorsque vous inventez/concevez une voiture, vous définissez des caractéristiques comme une voiture devrait avoir 4 portes, une ouverture, un volant, etc. inclure ces caractéristiques. L'implémentation n'est pas la tête de l'abstraction. Il ne fera que définir les caractéristiques qui devraient être incluses.

L'encapsulation empêche un utilisateur de suivre une procédure particulière pour accéder au contrôle d'un processus particulier. Il fournit simplement la sécurité et assure la robustesse du système.

Exemple: nous pouvons considérer les ressources humaines d'une entreprise comme une personne qui fonctionne sur le principe de l'encapsulation.i.e.; nous ne pouvons pas communiquer directement avec d'autres services; nous devons communiquer par leur intermédiaire à travers les ressources humaines. Ceci garantit la sécurité et une meilleure maintenance des archives de l'entreprise.

Ensemble, nous pouvons prendre l'exemple d'un UNDER CONSTRUCTION BUILDING.. où nous pouvons dire que des choses comme 'non. types de matériaux nécessaires, nombre de travailleurs, etc., autant d’abstractions qu’ils ont besoin d’être présents dans chaque bâtiment.

Mais, dans le même temps, l’inclusion de chacun de ces domaines dans un CONTRACTANT qui joue le rôle de médiateur entre les travailleurs et l’immeuble-investisseur peut être considérée comme une encapsulation ... En tant que, elle masque toutes les propriétés ci-dessus dans une même entité.

Par conséquent, si vous avez compris jusqu'à présent, vous pouvez dire cela L'abstraction n'est qu'un sous-ensemble d'ENCAPSULATION.i.e.Chaque entité que effectue l'abstraction est encapsulé en interne, mais tout ce qui montre que l'encapsulation n'a pas besoin d'être toujours abstraite.

par exemple. .ToString() La méthode définie dans presque toutes les classes est l'implémentation de Abstraction car nous ne faisons pas la fonction. A l'intérieur, tout ce qui nous importe est qu'elle change presque tout en chaîne. Et comme elle assemble en tant qu'une unité, elle est également encapsulée ... Mais, les membres privés que nous cachions et que nous accédions via Properties est un exemple d’encapsulation uniquement, car il s’agit essentiellement de garder la sécurité des données à l’esprit .. !!

J'espère que ça répond à ta question..!!

21
Rahul Ranjan

Encapsulation sert à masquer les variables ou quelque chose à l'intérieur d'une classe, empêchant ainsi l'utilisation par des tiers non autorisés. Ainsi, les méthodes publiques comme getter et setter y ont accès et les autres classes appellent ces méthodes pour accéder à

Abstraction implique la possibilité de définir des objets représentant des "acteurs" abstraits pouvant effectuer un travail, générer des rapports et modifier leur état, et "communiquer" avec d'autres objets du système.

Prenons l'exemple ci-dessous en temps réel:

Encapsulation: En tant que conducteur, vous savez démarrer la voiture en appuyant sur le bouton de démarrage et les détails internes des opérations de démarrage sont masqués. Ainsi, tout le processus de démarrage vous est caché, sinon nous pouvons dire que l'opération de démarrage est encapsulée pour vous.

OU

La roue motrice est encapsulée lors du processus de rotation de la roue de vous.

Abstraction:

Avant de mentionner quoi que ce soit sur l'abstraction, nous pouvons prendre ici trois utilisateurs différents (je les appelle en tant qu'entités)

1) Vous 2) Mécanicien local 3) Expert

Votre entité: Étant donné que vous ne savez que démarrer la voiture en appuyant sur un bouton, toutes les autres opérations en arrière-plan sont abstraites.

Entité locale de mécanicien: Notre mécanicien local connaît une partie de la mise en œuvre du démarrage de la voiture, c’est-à-dire qu’il peut ouvrir le capot de la voiture et vérifier le câble de la batterie ou le cales, etc. .

Entité experte: Puisque notre mécanicien expert (concepteur de la voiture) connaît toutes les opérations de notre voiture, il peut la réparer très rapidement. En bref, Expert Entity connaît toutes les implémentations de la voiture.

Le fonctionnement de la voiture est complètement abstrait de vous et il est partiellement implémenté dans Entité Mécanicien Locale et entièrement implémenté dans Entité Expert. Donc, vous êtes une classe abstraite n'ayant que des méthodes abstraites, Local Mechanic Entity vous a étendu (puisqu'il est également un utilisateur ordinaire) et il a implémenté certaines des méthodes et notre dernière entité expert étendue à Mechanic Local et implémentant toutes les méthodes.

Je pense que c'est un bon exemple.

15
Sameer Kazi

Tout a de nombreuses propriétés et comportements alors prenez n'importe quel objet que vous voulez: TV, Mobile, Voiture, Humain ou autre.

Abstraction:

  1. Processus de sélection de l'essence d'un objet dont vous avez vraiment besoin
  2. En d'autres termes, sélectionnez les propriétés dont vous avez besoin dans l'objet Exemple:
    une. TV - Son, images, entrée d'alimentation, entrée de canaux.
    b. Mobile - Bouton/Écran tactile, bouton d'alimentation, bouton de volume, port sim.
    c. Voiture - Direction, freinage, embrayage, accélérateur, trou de clé.
    ré. Humain - voix, corps, vue, audition, émotions. 

Encapsulation:

  1. Processus de masquage des détails d'un objet dont vous n'avez pas besoin
  2. En d'autres termes, masquez les propriétés et les opérations dont vous n'avez pas besoin, mais qui sont indispensables au bon fonctionnement de l'objet Exemple:
    une. Téléviseur - Interne et connexions des haut-parleurs, écrans, composants de distribution d'alimentation en noir et blanc, mécanisme de canal.
    b. Mobile - Comment l'entrée et le traitement sont analysés et traités, comment appuyer sur un bouton, modifier les volumes, comment sim va se connecter aux fournisseurs de services.
    c. Voiture - Comment la direction tourne la voiture, Comment ralentir ou arrêter la voiture, Fonctionnement de l’embrayage, Comment l'accélérateur augmente la vitesse, Comment le passage de clé est-il allumé?.
    ré. Humain - Comment la voix est produite, Qu'y a-t-il dans le corps, Comment fonctionne la vue, Comment l'audition fonctionne, Comment les émotions nous génèrent et nous affectent 

RÉSUMER tout ce dont vous avez besoin et ENCAPSULER tout ce dont vous n’avez pas besoin;)

12
Sandeep Kumar

Le libellé de votre question est étrange - Abstraction vs Encapsulation? Ce devrait être - quelqu'un explique l'abstraction et l'encapsulation ...

L'abstraction, c'est comprendre l'essence de la chose. 

Un exemple concret est l’art abstrait. Les artistes de ce style essaient de capturer/peindre l'essence de la chose qui lui permet encore d'être la chose. Ce frottis brun de 4 lignes capture l'essence de ce qu'est un taureau. 

L'encapsulation est une boxe noire.

Un téléphone cellulaire est un bon exemple. Je ne sais pas du tout comment le téléphone portable se connecte à un satellite, à une tour ou à un autre téléphone. Je ne sais pas du tout comment cette fichue chose comprend mes touches, ni comment cela prend et envoie des photos à une adresse électronique ou à un autre numéro de téléphone. Je n'ai aucune idée des détails complexes de la plupart des fonctionnalités d'un téléphone intelligent moderne. Mais je peux l'utiliser! Les téléphones ont des interfaces standard (conception littérale et logicielle) qui permettent à une personne qui comprend les bases de l’utiliser de les utiliser presque toutes.

Comment sont les deux liés? 

L'abstraction et l'encapsulation sont les fondements de la pensée et du design orientés objet. Donc, dans notre exemple de téléphone portable. La notion de téléphone intelligent est une abstraction au sein de laquelle certaines fonctionnalités et certains services sont encapsulés. L'iPhone et Galaxy sont d'autres abstractions de l'abstraction de niveau supérieur. Votre iPhone ou votre Galaxy physique sont des exemples concrets de plusieurs couches d'abstractions contenant des fonctionnalités et des services encapsulés.

7
mson

Abstraction Moyens Nous nous concentrons sur les qualités essentielles de quelque chose plutôt que sur un exemple spécifique et nous écartons automatiquement ce qui est sans importance ou sans importance.

Exemple Nous écrivons une classe de compte bancaire, les qualités essentielles d’un compte bancaire sont la date d’ouverture, le titre du compte, le numéro du compte, le solde, etc.

Encapsulation Signifie l'idée d'encapsuler ou d'encercler quelque chose non seulement pour conserver le contenu, mais également pour protéger et restreindre l'accès aux formulaires. Parallèlement au secret, il s'agit de réduire les dépendances entre différentes parties de l'application.

Exemple Dans notre classe de compte bancaire. Quelqu'un qui accède à l'attribut de Balance et tente de le modifier, la tentative peut réussir sans encapsulation. 

5
Shan

L'encapsulation aide à adhérer au principe de responsabilité unique et l'abstraction aide à adhérer au code d'interface et non à l'implémentation. 

Supposons que j'ai une classe pour voiture: classe de fournisseur de service et classe de conducteur: classe de consommateur de service. 

Pour l'abstraction: nous définissons la classe abstraite pour la CAR et toutes ses méthodes abstraites, qui sont des fonctions disponibles dans la voiture, telles que: changeGear (), applyBrake (). 

Maintenant, la voiture (classe concrète, c’est-à-dire comme Mercedes, BMW appliquera ces méthodes à sa manière et résumera l’exécution; l’utilisateur final continuera d’appliquer le changement de rapport à une instance de voiture donnée et, de façon polymorphe, l’exécution se déroulera comme défini dans la classe de béton . 

Pour Encapsulation: Imaginons maintenant que Mercedes propose une nouvelle fonctionnalité/technologie: le freinage anti-dérapage, tout en mettant en œuvre applyBrake (), elle encapsulera cette fonctionnalité dans la méthode applyBrake () et offrira ainsi de la cohésion, et le client du service y aura toujours accès () de l'objet car . Ainsi, Encapsulation permet de poursuivre dans la même implémentation de classe concrète.

3
user3576978

L'encapsulation cache des informations.

L'abstraction cache les détails de la fonctionnalité.

L'encapsulation est effectuée en construisant la classe. L'abstraction est obtenue en créant des classes abstraites ou des interfaces au-dessus de votre classe. 

Dans l'exemple donné dans la question, nous utilisons la classe pour ses fonctionnalités et nous ne nous soucions pas de savoir comment le périphérique parvient à cela. Nous pouvons donc dire que les détails du téléphone sont "extraits" de nous. 

L'encapsulation cache ce que le téléphone utilise pour accomplir quoi que ce soit; L'abstraction se cache COMMENT CELA FAIT.-

3
Navin Israni

Je pense que l’encapsulation peut sembler plus logique de discuter lorsque vous voyez COMMENT NE PAS FAIRE dans la programmation. Par exemple, considérons une classe de voiture comme ci-dessous.

 class Car{
   public float speed =0;
   public boolean isReverse = false;
   public boolean isStarted = false;
 }

Le code client peut utiliser la classe de voiture ci-dessus comme ci-dessous. 

class Main{
  public static void main(args String[]){
   Car car = new Car();
   // No need to start??
   car.speed = 100; // Turbo mode directly to 100
   car.speed = 0; // Turbo break
  }
}

Plus d’informations sur: http://brevitaz.com/encapsulation-example-benefits-Java/

Il s’agit d’un accès incontrôlé à la vitesse de la voiture et à d’autres variables. Par encapsulation, la classe voiture peut avoir un contrôle complet sur la manière dont les variables de données de la classe voiture peuvent être modifiées.

Toute entité concrète ayant un comportement donné est un exemple d’encapsulation. Le comportement est obtenu en enveloppant quelque chose et en cachant quelque chose du client. Dans le cas du mobile, ce sont les signaux, les puces, les circuits, la batterie, etc. 

Pour l'abstraction du même exemple - un utilisateur normal peut dire que je suis d'accord avec tout ce qui peut me permettre d'appeler et de recevoir des appels. Cette abstraction peut être remplacée par n'importe quel mobile concret. Départ Exemples d'abstraction .

2
Vishal Shukla

Permettez-moi de vous donner mes 2 centimes d'une analogie avec le monde réel, basée sur l'exemple.

Disons que vous avez un site d'abonnement, par exemple un site wordpress

Chaque utilisateur a un rôle, par exemple administrateur, abonné, etc. De nombreux utilisateurs peuvent être administrateurs, abonnés, etc.

Donc, ici, abstraction est reflété dans le fait que tout utilisateur avec un rôle administrateur peut faire un ensemble de choses, peu importe l'utilisateur en question} _ (ceci est un exemple de abstraction).

D'autre part, les utilisateurs abonnés n'ont pas accès à certains paramètres du site, donc {certains éléments internes de l'application sont encapsulés pour les abonnés ordinaires} _ (il s'agit d'un exemple de encapsulation)

Comme on peut voir que l’abstraction et l’encapsulation sont des concepts relatifs, elles s’appliquent à quelque chose de spécifique.

On peut suivre ce raisonnement et expliquer polymoprhisme et héritage.

Par exemple, les utilisateurs super-administrateurs peuvent faire tout ce que les utilisateurs administrateurs peuvent faire, et même plus. De plus, si les rôles d’administrateur bénéficient d’une mise à jour des fonctionnalités, les super-administrateurs obtiendront la même mise à jour. Ainsi, on peut voir ici un exemple de héritage, dans ce rôle de super-administrateur inherit toutes les propriétés des rôles d'administrateur et les étendre. Note que pour la majeure partie du site, les administrateurs sont interchangeables avec les super-administrateurs (ce qui signifie qu'un utilisateur super-administrateur peut facilement être utilisé à la place d'un utilisateur administrateur, mais pas l'inverse en général).

1
Nikos M.

Si vous avez vu une machine de télévision importante, les connexions TV et le tube de couleur TV sont cachés dans le boîtier du téléviseur, ce qui n’a pas été exposé aux téléspectateurs comme nous et n’a exposé que les éléments de base d’un téléviseur, tels que les touches de chaîne TV, les touches de volume TV, le commutateur ON/OFF , Commutateur de câble et télécommande de télévision pour que les téléspectateurs puissent l'utiliser. Cela signifie que la machine de télévision, les connexions de télévision et le tube couleur de télévision sont des données non désirées et que les téléspectateurs n'ont pas besoin de les voir depuis l'extérieur du monde.

Donc, encapsuler signifie cacher les caractéristiques importantes d'une classe qu'il n'est pas nécessaire d'exposer en dehors d'une classe et exposer uniquement les choses nécessaires d'une classe . Ici, une partie cachée d'une classe agit comme une encapsulation et une partie exposée d'une classe agit comme l'abstraction.

0
Biju kalanjoor

Abstraction 

Il est utilisé pour gérer les complexités des POO. En utilisant cette propriété, nous pouvons fournir à l'utilisateur les fonctionnalités essentielles d'un objet sans inclure ses explications d'arrière-plan. Par exemple, lorsque vous envoyez un message à un ami, nous écrivons simplement le message, dites "hiiii" et appuyez sur "envoyer". Le message est alors livré à sa destination (son ami). Nous voyons ici l’abstraction à l’œuvre, c’est-à-dire que nous sommes moins concernés par le fonctionnement interne du mobile responsable de l’envoi et de la réception du message.

0
Akash Singh

Il suffit de penser à Abstraction comme masquant le clavier et les détails de l'écran, Encapsulation comme masquant les circuits internes qui les lient.

0
user3757331

Abstraction

Nous utilisons beaucoup d’abstractions dans notre vie quotidienne. Pensez à une voiture.La plupart d’entre nous ont une vue abstraite du fonctionnement d’une voiture.Nous savons comment interagir avec elle pour la faire faire ce que nous voulons qu'elle fasse: nous mettez l’essence, tournez une clé, appuyez sur des pédales, etc. Mais nous ne comprenons pas nécessairement ce qui se passe dans la voiture pour la faire bouger et nous n'avons pas besoin de… .. Des millions d'entre nous utilisons des voitures tous les jours sans comprendre les détails de leur fonctionnement. L'abstraction nous aide à aller à l'école ou travailler!

Un programme peut être conçu comme un ensemble d'abstractions en interaction. En Java, ces abstractions sont capturées dans des classes. Le créateur d'une classe doit évidemment connaître son interface, tout comme le conducteur d'une voiture peut utiliser le véhicule sans connaître le fonctionnement du moteur.

Encapsulation

Prenons un système bancaire. Les systèmes bancaires ont des propriétés telles que compte no, type de compte, solde, etc. Si quelqu'un tente de modifier le solde du compte, cette tentative peut aboutir s'il n'y a pas d'encapsulation. Par conséquent, l’encapsulation permet à la classe d’avoir un contrôle total sur ses propriétés.

0

Je suppose qu'un œuf peut être considéré comme une encapsulation et le contenu comme une abstraction. Le shell protège les informations. Vous ne pouvez pas avoir le contenu d'un oeuf sans la coquille. , LOL

0
Humberto

Abstration qui cache les détails internes au monde extérieur, par exemple, vous créez une classe (telle que la calculatrice de la classe), mais pour l’utilisation finale, vous fournissez un objet de la classe. type de mécanisme utiliser en interne .Objet de classe sous forme abstraite.

L'encapsulation est la technique permettant de rendre les champs d'une classe privés et de fournir un accès aux champs via des méthodes publiques. Si un champ est déclaré privé, il ne peut être consulté par personne en dehors de la classe, masquant ainsi les champs de la classe. Pour cette raison, l’encapsulation est également appelée «masquage de données». Par exemple, un calculateur de classe contenant des méthodes privées getAdd, getMultiply.

Ma réponse ci-dessus vous aidera à comprendre le concept.

0
Apurva