La différence entre l'abstraction et d'encapsulation?
Qu'est-ce que le précise la différence entre l'encapsulation et d'abstraction?
- J'ai écrit. réponse qui répond à votre question.
Vous devez vous connecter pour publier un commentaire.
Qu'est-ce que le précise la différence entre l'encapsulation et d'abstraction?
Vous devez vous connecter pour publier un commentaire.
Plus de réponses ici, l'accent sur la programmation orientée objet, mais l'encapsulation commence beaucoup plus tôt:
Chaque fonction est un l'encapsulation; en pseudo-code:
Ici,
distance
encapsule le calcul de l' (Euclidienne) de la distance entre deux points dans un plan: il masque les détails de mise en œuvre. C'est l'encapsulation, pure et simple.L'Abstraction est le processus de généralisation: la prise d'une mise en œuvre concrète et de le rendre applicable à différentes, mais liées dans une certaine mesure, les types de données. L'exemple classique de l'abstraction est C
qsort
fonction pour trier les données:La chose à propos de
qsort
est qu'il ne s'inquiète pas des données qu'il trie — en fait, il ne sais pas quelles données il trie. Plutôt, son type d'entrée est un pointeur sans type (void*
) qui est juste à C de façon de dire “je n'ai pas de soins sur le type de données” (ce qui est aussi appelé type d'effacement). Le point important est que la mise en œuvre deqsort
reste toujours le même, quel que soit le type de données. La seule chose qui a changer, c'est la fonction de comparaison, qui diffère d'un type de données type de données.qsort
s'attend donc à l'utilisateur de fournir ladite fonction de comparaison comme un argument de fonction.D'Encapsulation et d'abstraction aller main dans la main de sorte que beaucoup de sorte que vous pourriez faire le point de qui ils sont vraiment inséparables. Pour des raisons pratiques, c'est probablement vrai; cela dit, voici un modèle qui n'est pas une abstraction:
Nous encapsuler le point de coordonnées, mais nous n'avons pas matériellement abstrait, loin, au-delà de grouper logiquement.
Et voici un exemple d'abstraction qui n'est pas encapsulation:
C'est un générique variable
pi
avec une valeur donnée (π), et la déclaration n'est pas le type exact de la variable. Certes, j'avais du mal à trouver quelque chose comme cela dans la vraie code: abstraction pratiquement toujours utilise l'encapsulation. Cependant, le ci-dessus ne existent réellement en C++(14), via variable templates (= modèles génériques pour les variables); avec un peu plus d'une syntaxe complexe, par exemple:Showing only relevant data to mobile a user like screen, camera, speaker
Utilisateur ne se soucie pas de la façon dont la carte de circuit de mobile fonctionne . Est-ce exemple bon ?Encapsulation est de cacher les détails d'implémentation qui peut ou peut ne pas être génériques ou spécialisés comportement(s).
Abstraction est de fournir une généralisation (par exemple, sur un ensemble de comportements).
Voici une bonne lecture: L'Abstraction, l'Encapsulation, et se Cacher de l'Information par Edward V. Berard de l'Objet de l'Agence.
Beaucoup de réponses et de leurs exemples sont trompeuses.
L'Encapsulation est l'emballage de données et fonctions opérant sur des données dans un seul composant et de restreindre l'accès à certains les composants de l'objet.
L'Encapsulation signifie que la représentation interne d'un objet est généralement caché de la vue à l'extérieur de l'objet de la définition.
L'Abstraction est un mécanisme qui représentent l'essentiel des fonctionnalités sans y compris les détails de mise en œuvre.
Encapsulation:-- se cacher de l'Information.
Abstraction:-- mise en Œuvre de cacher.
Exemple:
Représentation interne de l'objet de la
foo
classe est caché à l'extérieur de la classe. --> Encapsulation.Tout membre accessible (données/de fonction) d'un objet de
foo
est restreinte et ne peut être accessible que par cet objet.Mise en œuvre de la méthode
add
est caché. --> l'Abstraction.qsort
fonction en C est un exemple de l'abstraction. Vous ne connaissez pas les détails de sa mise en œuvre. Aucune encapsulation en cause ici. À l'aide des constructeurs pour initialiser les champs de données d'un objet en C++ est un exemple d'encapsulation (contrôle d'accès de l'objet du composant par le constructeur).encapsulation met certaines choses dans une boîte et vous donne un judas; ce qui vous empêche de coucher avec les engrenages.
abstraction flat-out ignore les détails qui n'ont pas d'importance, comme si les choses ont engrenages, cliquets, les volants, ou nucléaire cœurs; ils ont juste "aller"
exemples d'encapsulation:
exemples de l'abstraction:
L'Encapsulation moyen-possibilité de cacher des données comme l'utilisation de méthodes getter et setter etc.
L'Abstraction moyen - masquage de la mise en œuvre à l'aide de la classe abstraite et interfaces etc.
Exemple 2:
Le architecte de solution est la personne qui crée le haut niveau résumé la conception technique de l'ensemble de la solution, et cette conception est ensuite remis à la équipe de développement pour mise en œuvre.
Ici, architecte de solution agit comme un résumé et le développement de l'équipe agit comme une Encapsulation.
Courtoisie
Beaucoup de bonnes réponses sont fournies ci-dessus, mais je vais vous présenter mon(Java) point de vue ici.
Encapsulation des données signifie simplement d'emballage et de contrôle d'accès de logiquement des données regroupées dans une classe. Il est généralement associé à un autre mot-clé - Données Cacher. Ceci est réalisé en Java à l'aide de modificateurs d'accès.
Un exemple simple serait de définir une variable privée et donnant accès à l'aide de méthodes getter et setter ou de faire une méthode privée comme c'est seulement l'utilisation est à l'intérieur de la classe. Il n'est pas nécessaire pour l'utilisateur de savoir à propos de ces méthodes et de variables.
Note : Il ne devrait pas être mal compris, que l'encapsulation est tout au sujet des données de cacher uniquement. Quand nous disons que l'encapsulation, l'accent devrait être mis sur le regroupement ou l'emballage, ou le regroupement des données et comportement de l'ensemble.
Abstraction de données sur l'autre main est le concept de la généralisation de sorte que le dessous de la complexité de la logique n'est pas exposé à l'utilisateur. En Java, ceci est réalisé en utilisant interfaces et résumé classes.
Exemple -
Permet de dire que nous avons un interface Animal et il a une fonction makeSound(). Il y a deux classes de béton Chien et Chat qui implémentent cette interface. Ces classes concrètes ont des implémentations distinctes de makeSound() fonction. Maintenant, disons que nous avons un animal(Nous obtenir ce à partir de certains module externe). Tout utilisateur sait, c'est que l'objet qu'il reçoit est un Animal et il est de la responsabilité des utilisateurs d'imprimer l'animal de son. Une force brute consiste à vérifier l'objet reçu à identifier c'est type, puis transtypage à ce type d'Animal et puis appel makeSound() sur celui-ci. Mais d'une façon plus soignée est à résumés chose. L'utilisation de l'Animal comme un polymorphe de référence et appel makeSound() sur celui-ci. Au runtime selon ce qui est l'Objet réel est de type correct de la fonction sera appelée.
Plus de détails ici.
Logique complexe est dans le circuit imprimé, qui est encapsulé dans un pavé tactile et une belle interface(boutons) est fourni à l'abstrait à l'utilisateur.
PS: les liens sont sur mon blog personnel.
Comme lorsque vous conduisez une voiture, vous savez ce que la pédale d'accélérateur ne mais vous ne pouvez pas savoir le processus à l'origine, il parce qu'il est encapsulé.
Permettez-moi de donner un exemple en C#. Supposons que vous avez un nombre entier:
vous pouvez utiliser une méthode comme Nombre.ToString() qui retourne les caractères de la représentation de la numéro 5, et les stocke dans un objet de type string. La méthode vous dit ce qu'il fait au lieu de comment il le fait.
Ce sont un peu les concepts flous qui ne sont pas propres à l'Informatique et la programmation. Je voudrais proposer quelques réflexions supplémentaires qui peuvent aider les autres à comprendre ces concepts importants.
Réponse Courte
Encapsulation - Masquage et/ou de restreindre l'accès à certaines parties d'un système, tout en exposant les interfaces nécessaires.
Abstraction - compte tenu de quelque chose avec certaines caractéristiques supprimés, à l'exception de réalités concrètes, des objets spécifiques, ou des cas réels, réduisant ainsi la complexité.
Le principal similitude est que ces techniques visent à améliorer la compréhension et l'utilité.
Le principal différence est que l'abstraction est une façon de représenter les choses plus simplement (souvent pour rendre la représentation plus largement applicable), considérant que l'encapsulation est un procédé de modification de la façon dont d'autres choses interagir avec quelque chose.
Réponse Longue
Encapsulation
Voici un exemple d'encapsulation qui je l'espère rend les choses plus claires:
Ici, nous avons un Arduino Uno, et un Arduino Uno dans une enceinte. Une enceinte est une excellente représentation de ce que l'encapsulation est tout au sujet.
Encapsulation vise à protéger certaines composantes des influences extérieures et de connaissances ainsi que d'exposer les composants qui doivent interface avec. En termes de programmation, cela implique se cacher de l'information si modificateurs d'accès, qui changent la mesure dans laquelle certaines variables et/ou les propriétés peuvent être lues et écrites.
Mais au-delà, l'encapsulation vise également à fournir ces interfaces externes de manière beaucoup plus efficace. Avec notre Arduino exemple, cela peut inclure les beaux boutons et de l'écran qui rend l'utilisateur de l'interaction avec le dispositif beaucoup plus simple. Ils fournissent à l'utilisateur des moyens simples pour affecter le comportement du périphérique et obtenir de précieuses informations sur son fonctionnement qui autrement serait beaucoup plus difficile.
Dans la programmation, cela implique le regroupement des diverses composantes dans une séparables construire, comme un
function
,class
, ouobject
. Elle vise aussi à fournir les moyens d'interagir avec ces constructions, ainsi que les méthodes pour obtenir des informations utiles à leur sujet.Encapsulation permet aux programmeurs dans de nombreux de nombreux moyens supplémentaires, pas moins de ce qui est de l'amélioration du code de la maintenabilité et de la testabilité.
Abstraction
Bien que de nombreuses autres réponses ici défini l'abstraction comme la généralisation, personnellement, je pense que la définition est erronée. Je dirais que la généralisation est en fait un spécifique type de l'abstraction, et non pas l'inverse. En d'autres termes, toutes les généralisations sont des abstractions, mais toutes les abstractions sont pas nécessairement des généralisations.
Voici comment j'aime à penser de l'abstraction:
Diriez-vous de l'image il y a un arbre? Les Chances sont que vous. Mais est-il vraiment un arbre? Eh bien, bien sûr que non! C'est un tas de pixels mis à ressembler à quelque chose qu'on pourrait appeler un arbre. On pourrait dire qu'il représente une abstraction d'un vrai arbre. Notez que plusieurs détails visuels de l'arbre sont omis. Aussi, il ne grandit pas, consomment de l'eau, ou de produire de l'oxygène. Comment pourrait-il? c'est juste un tas de couleurs sur un écran, représentés par des octets dans la mémoire de votre ordinateur.
Et ici, c'est l'essence même de l'abstraction. C'est une façon de simplifier les choses afin qu'elles soient plus faciles à comprendre. Chaque idée dans votre tête est une abstraction de la réalité. Votre image mentale d'un arbre n'est pas plus un arbre actuelle que ce jpeg est.
Dans la programmation, nous pourrions l'utiliser à notre avantage en créant un
Tree
classe avec des méthodes de simulations de croissance, consommant de l'eau, et la production d'oxygène. Notre création serait quelque chose qui correspond à notre expérience du réel arbres, et ne comprend que les éléments que nous nous soucions vraiment pour notre simulation. Nous utilisons l'abstraction comme une façon de représenter notre expérience de quelque chose avec des octets et des mathématiques.Les Classes Abstraites
L'Abstraction dans la programmation nous permet également de considérer les points communs entre plusieurs "béton" types d'objets (les types qui existent réellement) et de définir les points communs au sein d'une entité unique. Par exemple, notre
Tree
classe peut hériter d'uneabstract class Plant
, qui a plusieurs propriétés et méthodes qui sont applicables à l'ensemble de notre usine-comme pour les classes, mais supprime ceux qui sont spécifiques à chaque type de plante. Cela peut réduire considérablement la duplication de code, et améliore la maintenabilité.La différence pratique d'un
abstract class
et la plaineclass
est que, conceptuellement, il n'y a pas de "vrai" cas de laabstract class
. Il n'est pas judicieux de construire unPlant
objet, car ce n'est pas assez précis. Tous les "vrais"Plant
est également un plus type spécifique dePlant
.Aussi, si nous voulons que notre programme soit plus réaliste, on pourrait envisager le fait que notre
Tree
de classe peut-être trop abstrait lui-même. En réalité, tous lesTree
est un plus type spécifique deTree
, afin que nous puissions créer des classes pour les types commeBirch
,Maple
, etc. qui héritent de nos, peut-être maintenantabstract
,Tree
classe.JVM
Un autre bon exemple de l'abstraction est la Java Virtual Machine (JVM), qui fournit un service virtuel ou le résumé de l'ordinateur pour le code Java pour exécuter sur. Essentiellement, il enlève tout de la plate-forme de composantes spécifiques d'un système, et fournit une interface abstraite de "ordinateur", sans égard à aucun système en particulier.
La Différence
Encapsulation diffère de l'abstraction en ce qu'il n'a rien à voir avec la façon dont le 'réel' ou 'précise' est une chose. Il n'a pas supprimer composants de quelque chose pour le rendre plus simple ou plus largement applicable. Plutôt il peut cacher certains composants pour atteindre un but similaire.
Encapsulation: cache indésirables/onu prévu/bienséance détails de mise en œuvre des utilisateurs réels de l'objet.
par exemple,
Abstraction: Est-ce une manière de donner de la généralisation, et donc à une manière commune pour travailler avec des objets de grande diversité. par exemple,
Différence Entre l'Abstraction et d'Encapsulation.
Abstraction: L'idée de présenter quelque chose de simplifié /manière différente, ce qui est plus simple à comprendre et à utiliser ou plus pertinentes à la situation.
Envisager une classe qui envoie un mail... il utilise l'abstraction pour se montrer à vous comme une sorte de garçon de courses, de sorte que vous pouvez appeler emailSender.envoyer(mail, le destinataire). Ce qu'il ne choisit POP3 /SMTP, appelant les serveurs, le MIME de la traduction, etc, est prélevée à l'écart. Vous ne voyez que votre garçon de courses.
Encapsulation: L'idée de la sécurisation et de masquer les données et les méthodes qui sont privés d'un objet. Il traite plus avec le fait de faire quelque chose d'indépendant et à toute épreuve.
Me prendre, par exemple. Je encapsuler mon rythme cardiaque du reste du monde. Parce que je ne veux pas que quelqu'un d'autre modification de cette variable, et je n'ai pas besoin de personne d'autre à mettre dans l'ordre pour moi de fonction. Son importance est vitale pour moi, mais vous n'avez pas besoin de savoir ce que c'est, et vous avez probablement ne se soucient pas de toute façon.
Regardez autour de vous verrez que presque tout ce que vous touchez est un exemple à la fois de l'abstraction et d'encapsulation. Votre téléphone, par exemple vous présente l'abstraction d'être capable de prendre ce que vous dites et de le dire à quelqu'un d'autre - la couverture de GSM, de l'architecture du processeur, les fréquences radio, et un million d'autres choses que vous ne comprenez pas ou de soins. Il encapsule également de certaines de vos données, comme les numéros de série, codes d'identification, les fréquences, etc.
Tout cela fait du monde un meilleur endroit pour vivre 😀
Abstraction: Seule information nécessaire est indiqué. Concentrons-nous sur l'exemple de la commutation sur un ordinateur. L'utilisateur n'a pas à savoir ce qui se passe pendant que le système est toujours en cours de chargement (que l'information est cachée à l'utilisateur).
Prenons un autre exemple, celui de l'ATM. Le client n'a pas besoin de savoir comment la machine lit le code PIN et les processus de la transaction, tout ce qu'il doit faire est d'entrer le code PIN, prendre l'argent et partir.
Encapsulation: Traite avec de cacher les données sensibles d'un clas donc la privatisation d'une partie d'elle. C'est une façon de garder certaines informations confidentielles de ses clients, en leur permettant pas d'accéder de l'extérieur.
Un autre exemple:
Supposons que j'ai créé un immuable classe Rectangle comme ceci:
Maintenant, il est évident que j'ai encapsulé la largeur et la hauteur (l'accès est en quelque sorte limitée), mais je n'ai pas abstraite rien (ok, je suis peut-être ignoré lorsque le rectangle est situé dans le libellé des coordonnées de l'espace, mais c'est un défaut de l'exemple).
Bonne abstraction implique généralement une bonne encapsulation.
Un bon exemple de l'abstraction est une base de données générique de la classe de connexion. Son interface publique est la base de données agnostiques, et très simple, mais me permet de faire ce que je veux avec la connexion. Et vous voyez? Il y a aussi l'encapsulation là, parce que la classe doit avoir tout le bas niveau des poignées et des appels à l'intérieur.
Abstraction
etEncapsulation
en utilisant un seul exemple général------------------------------------------------------------------------------------------------------------------------------------
Nous avons tous utiliser la calculatrice pour le calcul de problèmes complexes !
Your both example tell about just encapsulation, not abstraction
; cause de l'abstraction n'a rien à voir avechiding
plutôtGeneralizing
Un mécanisme qui empêche les données d'un particulier objets à l'abri de intentionnelle ou accidentelle d'une utilisation abusive par des fonctions externes est appelé "l'Encapsulation de données"
La loi de représenter l'essentiel des caractéristiques sans y compris l'arrière-plan de détails ou d'explications est connu comme abstraction
Abstraction : Abstraction des moyens de montrer
What
partie de la fonctionnalité.Encapsulation : Encapsulation des moyens pour masquer la
How
partie de la fonctionnalité.Permet de prendre un exemple très simple
Programme de la classe de l'Application de la Console
Encapsulation est enveloppant la complexité dans une capsule qui est de la classe & d'où l'Encapsulation...
Alors que l'abstraction est les caractéristiques d'un objet qui se différencie des autres objets...
L'Abstraction peut être obtenu au moyen de la classe abstraite ayant une ou plusieurs méthodes abstraites. Qui n'est rien, mais la caractéristique qui doit être mis en œuvre par la classe de l'étendre.
par exemple, lorsque vous inventer/conception d'une voiture vous définissez une des caractéristiques telles que la voiture doit avoir 4 portes, break, volant etc... si quelqu'un utilise cette conception devrait inclure cette caractéristique. La mise en œuvre n'est pas la tête de chacun d'abstraction. Il suffit de définir les caractéristiques qui devraient être inclus.
Encapsulation est réalisée à la gestion des données et le comportement dans une capsule qui est de la classe & par l'utilisation de modificateurs d'accès comme public, privé, protégé avec l'héritage, l'agrégation ou de composition. Donc, vous n'afficher seulement les choses nécessaires, que trop, que dans la mesure que vous souhaitez afficher. c'est à dire public, protégé, conviviale & privé ka funda......
par exemple, GM décide d'utiliser l'abstraction de la conception de la voiture ci-dessus. Mais ils ont différents produits ayant les mêmes caractéristiques & fait pratiquement la même fonctionnalité. Donc ils écrire une classe qui s'étend au-dessus de la classe abstraite. Il dit comment la boîte de vitesses doit travailler, comment briser devrait fonctionner, la façon dont le volant devrait fonctionner. Ensuite, tous les produits, il suffit d'utiliser cette fonctionnalité commune. Ils n'ont pas besoin de savoir comment la boîte de vitesses fonctionne ou briser des œuvres de direction ou à la papule œuvres. Indivisual produit peut sûrement avoir plus de fonctionnalités, comme a/c ou à verrouillage automatique etc.....
Les deux sont puissants; mais à l'aide de l'abstraction besoin de plus de compétences que d'encapsulation et de plus grandes applications/produits ne peut survivre hors de l'abstraction.
De l'Abstraction--- Masquage de mise en Œuvre--lors de la Conception,---à l'Aide de/l'Interface Abstraite calsses
Encapsulation--Masquage des Données, Au Développement---l'Utilisation des modificateurs d'accès(public/privé)
Prenons l'exemple d'une pile. Il pourrait être mis en œuvre à l'aide d'un tableau ou d'une liste liée. Cependant, les activités qu'il soutient sont push et pop.
Maintenant abstraction est d'exposer uniquement les interfaces push et pop. La représentation sous-jacente est caché (est-il un tableau ou une liste chaînée?) et une interface bien définie, est fourni. Maintenant, comment vous assurez-vous qu'aucun accès accidentel est faite pour les données abstraites? C'est là que encapsulation vient dans. Par exemple, les classes en C++ utiliser les spécificateurs d'accès qui veillent à ce que l'accès accidentel et la modification est impossible. Et aussi, en faisant de l'mentionnés ci-dessus interfaces public, il assure que la seule façon de manipuler la pile est par le biais de l'interface bien définie. Dans le processus, il a couplé les données et le code qui peut manipuler (ne parlons pas de l'ami des fonctions en jeu ici). Qui est, le code et les données sont collées ou attaché ou encapsulé.
De cette
Différence entre l'Encapsulation et d'Abstraction dans OOPS
D'Abstraction et d'Encapsulation sont deux importants de la Programmation Orientée Objet (OUPS) des concepts. Encapsulation et d'Abstraction les deux sont interdépendants termes.
La Vie réelle Différence Entre l'Encapsulation et d'Abstraction
Encapsuler les moyens à cacher. L'Encapsulation est également appelé de données se cacher.Vous pouvez penser à l'Encapsulation comme une capsule (médecine tablette) qui cache la médecine à l'intérieur. L'Encapsulation est l'emballage, se cache des propriétés et des méthodes. L'Encapsulation est utilisée pour masquer le code et les données dans une seule unité pour protéger les données à partir de l'extérieur du monde. La classe est le meilleur exemple d'encapsulation.
L'Abstraction désigne à afficher uniquement les informations nécessaires à l'utilisateur prévu. Comme le nom le suggère, l'abstraction est la "forme abstraite de tout". Nous utilisons l'abstraction dans les langages de programmation à faire abstraction de la classe. Classe abstraite représente la vue abstraite des méthodes et propriétés de la classe.
Mise en œuvre de la Différence Entre l'Encapsulation et d'Abstraction
Abstraction est mis en œuvre à l'aide de l'interface et la classe abstraite tandis que l'Encapsulation est mis en œuvre en utilisant privé et protégé modificateur d'accès.
OUPS fait de l'utilisation de l'encapsulation pour appliquer l'intégrité d'un type (c'est à dire à s'assurer que les données est utilisé de manière appropriée) en empêchant les programmeurs d'accéder à des données non destinées manière. Grâce à l'encapsulation, seulement un certain groupe de fonctions peuvent accéder aux données. Le terme collectif pour les types de données et les opérations (méthodes) regroupés avec les restrictions d'accès (public/privé, etc.) est une classe.
Je vais essayer de démontrer l'Encapsulation d'une manière simple.. Permet de voir..
de classe) est connu comme l'encapsulation. L'Encapsulation de contenant et de cacher
des informations sur un objet, comme les structures de données internes et
code.
Encapsulation est -
Encapsulation implémente l'Abstraction.
Et de l'Abstraction est -
Permet de voir un exemple-
L'Image ci-dessous montre une interface graphique de "Détails sur le Client pour être AJOUTÉ dans une Base de données".
En regardant l'Image, nous pouvons dire que nous avons besoin d'une Classe de la Clientèle.
Étape 1: Qu'est-ce que mon Client les besoins de la Classe?
c'est à dire
1 Fonction pour Ajouter le Code Client et le Nom du Client dans la Base de données.
espace de noms CustomerContent
{
public class Client
{
public string CustomerCode = "";
public string Nomclient = "";
public void AJOUTER()
{
//ma DB code ici
}
Maintenant seulement AJOUTER de la méthode ne marchera pas seul ici.
Étape -2: Comment le travail de validation, AJOUTER de la loi sur la Fonction de?
Nous aurons besoin de la Connexion à la Base de code et un Code de Validation (Méthodes Supplémentaires).
Maintenant, il n'est pas nécessaire de montrer les Méthodes Supplémentaires(Validate(); CreateDBObject() [Compliquée et méthode Supplémentaire] ) à l'Utilisateur Final.L'utilisateur final ne doit voir et savoir sur le Code Client, Nom du Client et AJOUTER un bouton qui va AJOUTER l'enregistrement.. l'Utilisateur Final ne se soucie pas de la FAÇON dont il va AJOUTER les Données à la Base de données?.
Étape -3 Privé: les extra et compliqué méthodes qui n'implique pas l'Utilisateur Final de l'Interaction.
Afin de faire de ces Complexes et méthode Supplémentaire que Privé plutôt que Public(j'.e Cacher les méthodes) et la suppression de l'obj.Validate(); obj.CreateDBObject(); à partir de principal dans le Programme de classe-nous réaliser l'Encapsulation.
En d'autres mots, la Simplification de l'Interface à l'Utilisateur Final est l'Encapsulation.
Alors maintenant, le code se présente comme ci-dessous -
Résumé :
Étape -1: Qu'est-ce que mon Client les besoins de la Classe? est l'Abstraction.
Étape -3: Étape -3 Privé: les extra et compliqué méthodes qui n'implique pas l'Utilisateur Final de l'Interaction est l'Encapsulation.
P. S. - Le code ci-dessus est dur et rapide.
Ci-dessous le paragraphe m'a aidé à comprendre comment ils diffèrent les uns des autres:
Vous pouvez en lire plus ici.
Se cacher de l'Information n'est pas strictement nécessaire pour l'abstraction ou de l'encapsulation. L'Information peut être ignoré, mais n'a pas à être caché.
Encapsulation est la possibilité de traiter de quelque chose comme une seule chose, même si il peut être composé de plusieurs pièces complexes ou des idées. Par exemple, je peux dire que je suis assis dans un "président" plutôt que de se référer à la beaucoup de différentes parties de ce fauteuil, chacune avec un design spécifique et la fonction, tout s'assemble dans le but précisément de bien mes fesses à quelques pieds du sol.
Abstraction est activée par l'encapsulation. Parce que nous encapsuler les objets, nous pouvons penser que les choses qui se rapportent les uns aux autres d'une certaine façon plutôt que de s'enliser dans les détails les plus subtils de l'intérieur la structure de l'objet. L'Abstraction est la capacité à considérer l'image plus grande, retiré de la préoccupation de petits détails. La racine du mot est abrégé comme dans le résumé qui apparaît en haut d'un travail universitaire, non pas abstraite que dans une classe qui ne peut être instancié comme un dérivé de la sous-classe.
Je peux honnêtement dire que quand j'ai plop mon cul dans mon fauteuil, je n'ai jamais penser à la façon dont la structure de cette chaise va attraper et maintenir mon poids. C'est un assez décent président que je n'ai pas à vous soucier de ces détails. Donc, je peux tourner mon attention vers mon ordinateur. Et encore, je ne pense pas que sur les composants de mon ordinateur. Je suis juste à la recherche à une partie d'une page web, qui représente une zone de texte que je peux taper, et je suis de la communication dans les mots, à peine même de penser à comment mes doigts toujours trouver les bonnes lettres si vite sur le clavier, et la façon dont la connexion est finalement prise entre à appuyer sur les touches et l'affichage de ce forum. C'est la grande puissance de l'abstraction. Parce que les niveaux inférieurs du système peut être digne de confiance pour travailler avec la cohérence et la précision, nous avons l'attention de rechange pour le plus grand travail.
l'abstraction se cache non utile des données des utilisateurs
et l'encapsulation est de lier ensemble des données dans une capsule (une classe).
Je pense que l'encapsulation est une façon d'atteindre l'abstraction.
Le processus d'Abstraction et d'Encapsulation de générer à la fois des interfaces.
Une interface générée via l'encapsulation masque les détails de mise en œuvre.
Une interface générée par l'abstraction devient applicable à plusieurs types de données, par rapport à l'avant de l'abstraction.
Abstraction
est un contrat pour la mise en œuvre que nous allons faire. La mise en œuvre peut se changer au cours de la période de temps. Les diverses implémentations eux-mêmes peuvent ou ne peuvent pas être cachés, mais sont Masqué derrière l'Abstraction.Supposons que nous définissons tous les
APIs
d'une classe dans uneinterface
puis demander aux utilisateurs de notre code de depened sur la définition deAPIs
de lainterface
. Nous sommes libres de les améliorer ou de modifier la mise en œuvre seulement nous devons suivre l'ensemble du contrat. Les utilisateurs ne sont pas couplé avec notre mise en œuvre.Nous EXPOSER toutes les Règles NÉCESSAIRES (méthodes) dans l'abstraction, la mise en œuvre des règles sont laissés pour le réalisateur entités, également de la mise en place n'est pas partie de l'abstraction. C'est juste le signature et déclaration ce qui fait de l'abstraction.
Encapsulation
est tout simplement CACHER les détails internes par la réduction de l'accès des états et des comportements. Encapsulé classe peut ou peut ne pas avoir bien définiAbstraction
.java.util.List
est une abstraction pourjava.util.ArrayList
. Les états internes dejava.util.ArrayList
être marqué avecnon public
modificateurs d'accès est l'encapsulation.Modifier
Supposons une classe
Container.nava implements IContainer
,IContainer
peut déclarer des méthodes commeaddElement
,removeElements
,contains
, etc. IciIContainer
représente l'abstraction pour sa mise en œuvre en classe. L'Abstraction est de déclarer l'Api de la classe ou d'un module ou d'un système à l'extérieur du monde. Ces Api devenir lecontract
.Ce système peut être ou peut ne pas être encore développé. Les utilisateurs du système peuvent maintenant dépendent de la déclaration de l'Api et que vous êtes sûr de tout système de mise en œuvre de ce contrat sera toujours adhérer à l'Api déclaré, ils seront toujours fournir de l'tge mise en œuvre de ces Api. Une fois que nous avons écrit quelques béton entité ensuite de décider de cacher nos états internes est l'encapsulation
Je Pense que l'Encapsulation est une façon de mettre en œuvre l'abstraction. Jetez un oeil sur le lien suivant.
L'Abstraction et Encapsulation
En court
Abstraction utilisation -> Encapsulation
&
Encapsulation utilisation -> data cacher
OU
données de masquage est un sous-ensemble de l'Encapsulation et
L'Encapsulation est un sous-ensemble de l'Abstraction
Référence: http://www.tonymarston.co.uk/php-mysql/abstraction.txt
J'essaie de tracer une ligne entre l'abstraction et d'encapsulation, selon moi, l'Abstraction est plus conceptuel de la chose, où que l'encapsulation est l'un de l'abstraction de la mise en œuvre. Puisque l'on peut masquer des données sans encapsulation, par exemple en utilisant des constantes ou des variables; ainsi nous pouvons avoir encapsulation avec les données de la clandestinité, mais les données à cacher n'est pas toujours encapsulation. Ci-dessous le morceau de code que j'essaie de dépeindre forme la plus simple de ces concepts.
Dans l'action,
Permettez-moi d'essayer avec les exemple de code simple
Abstraction = Données Cacher + Encapsulation
IEnumerable<int> numbers
était public, alors ici aussiinterface IOperation
représente l'abstraction pour sa mise en œuvre en classe. L'Abstraction est de déclarer l'Api de la classe ou d'un module ou d'un système pour le public. Ce système peut être ou peut ne pas être encore développé. Les utilisateurs du système peuvent maintenant dépendent de la déclaration de l'Api et que vous êtes sûr de tout système implemwnting un tel contrat sera toujours adhérer à l'Api déclaré, ils seront toujours fournir de l'tge mise en œuvre de ces Api. Une fois que nous avons écrit quelques béton entité ensuite de décider de cacher nos états internes est l'encapsulation.D'Abstraction et d'Encapsulation, les deux sont savoir pour les données de la clandestinité. Mais il y a une grande différence.
Encapsulation
L'Encapsulation est un processus de liaison ou l'enveloppement des données et les codes qui opère sur les données en une seule unité appelée Classe.
L'Encapsulation permet de résoudre le problème au niveau de mise en œuvre.
En classe, vous pouvez masquer des données en utilisant privés ou protégés des modificateurs d'accès.
Abstraction
L'Abstraction est la notion de masquage des détails sans importance. En d'autres mots, système complexe simple en cachant les détails inutiles de l'utilisateur.
L'Abstraction permet de résoudre le problème au niveau de la conception.
Vous pouvez réaliser l'abstraction par la création de l'interface et la classe abstraite Java.
En ruby, vous pouvez réaliser l'abstraction par la création de modules.
Ex: Nous utilisons (collecte, de carte, de réduire, trier...) les méthodes de Énumérable module de Tableau de Hachage et de rubis.
Abstraction
L'Abstraction est le processus qui consiste à extraire les propriétés communes et les champs de tous les existants et prévus de mise en œuvre.
Par exemple:
Voiture est une abstraction pour la Berline, Berline, SUV, Coupé, Cabriolet.
Voiture aurait toutes les propriétés et les champs communs à tous les types de voitures.
Encapsulation
L'Encapsulation est le processus de masquage des détails indésirables de l'utilisateur. Ce terme vient de la Capsule. Tout comme la médecine est caché de l'utilisateur à l'intérieur de la capsule. Les détails des différentes machines et des équipements et appareils allant de Mélangeurs, des Vélos, des machines à Laver, de la Radio, de la Télévision des Avions. Vous ne voulez pas tous les détails de la machine pour être visible à l'utilisateur.
En termes de programmation:
Considérons une Voiture de classe.
Dans l'exemple ci-dessous, tout ce que l'utilisateur a besoin de savoir, c'est de tourner la clé (clé en main() la méthode), il ne sait pas sur les fonctions internes. L'utilisateur n'a pas besoin de savoir parler de toutes les fonctions internes ou sur les composants internes.
Dans ce cas, toutes les méthodes privées sont des fonctions internes et des champs privés comme à Piston p1 " sont des données internes de l'utilisateur qui n'a pas besoin de savoir.
En bref:
Abstraction est une technique qui nous aide à identifier laquelle des informations spécifiques est essentielle, et l'information qui doit être caché.
Encapsulation est alors la technique pour isoler les informations, de manière à cacher les détails et les détails d'implémentation d'un objet.
Encapsulation besoin de modularité. Il vous oblige à créer des objets qui possède les données et les méthodes pour traiter les données. Dans ce cas, vous pouvez l'afficher en tant que module.
Abstraction vous offre une vision générale de vos classes.
Il y a des différences entre
et
L'Encapsulation est un exemple de l'abstraction. Le point de l'ensemble de l'encapsulation est l'abstraction de ce qui se passe à l'intérieur de la fonction, afin de réduire toute cette complexité à un symbole (la référence ou le nom de la fonction), pour activer la fonction dans une boîte noire.
Dans la programmation, le mot "abstrait" est une commande. Lorsqu'une classe hérite d'une classe abstraite (ou une interface), vous êtes condamnée à créer une abstraction.
Une chose, peut-être une chose fondamentale que d'autres réponses oublier de mentionner est que, encapsulation EST l'abstraction. Par conséquent, il n'est pas précis pour mettre en contraste les deux et chercher les différences, mais plutôt à regarder encapsulation comme une forme d'abstraction.