451 Stimmen

Unterschied zwischen Abstraktion und Verkapselung?

Was ist der genaue Unterschied zwischen Kapselung und Abstraktion?

15voto

Zayn Ali Punkte 4385

Unterschied zwischen Abstraktion und Verkapselung.

Difference between Abstraction and Encapsulation

14voto

Sudhir Jonathan Punkte 16099

Abstraktion: Die Idee, etwas auf eine vereinfachte/andere Art und Weise darzustellen, die entweder leichter zu verstehen und zu verwenden ist oder der Situation angemessener ist.

Nehmen wir eine Klasse, die eine E-Mail versendet... sie nutzt die Abstraktion, um sich als eine Art Botenjunge darzustellen, so dass man emailSender.send(mail, recipient) aufrufen kann. Was sie tatsächlich tut - POP3 / SMTP wählen, Server anrufen, MIME-Übersetzung usw. - ist abstrahiert. Sie sehen nur Ihren Botenjungen.

Verkapselung: Die Idee der Sicherung und des Verbergens von Daten und Methoden, die für ein Objekt privat sind. Es geht eher darum, etwas unabhängig und narrensicher zu machen.

Nehmen Sie mich zum Beispiel. Ich kapsle meine Herzfrequenz vom Rest der Welt ab. Denn ich möchte nicht, dass jemand anderes diese Variable verändert, und ich brauche niemanden, der sie festlegt, damit ich funktionieren kann. Sie ist lebenswichtig für mich, aber Sie müssen nicht wissen, was sie ist, und es ist Ihnen wahrscheinlich sowieso egal.

Wenn Sie sich umsehen, werden Sie feststellen, dass fast alles, was Sie anfassen, ein Beispiel für Abstraktion und Kapselung ist. Ihr Telefon zum Beispiel bietet Ihnen die Abstraktion, dass es in der Lage ist, das, was Sie sagen, an jemand anderen weiterzugeben - und verdeckt damit GSM, Prozessorarchitektur, Funkfrequenzen und eine Million anderer Dinge, die Sie nicht verstehen oder nicht verstehen wollen. Es kapselt auch bestimmte Daten von Ihnen ein, wie Seriennummern, ID-Nummern, Frequenzen usw.

All das macht die Welt zu einem schöneren Ort zum Leben :D

10voto

Dav'T Punkte 101

Abstraktion: Es werden nur die notwendigen Informationen angezeigt. Schauen wir uns das Beispiel des Einschaltens eines Computers an. Der Benutzer muss nicht wissen, was vor sich geht, während das System noch geladen wird (diese Information ist für den Benutzer verborgen).

Nehmen wir ein anderes Beispiel, nämlich das des Geldautomaten. Der Kunde muss nicht wissen, wie der Automat die PIN liest und die Transaktion abwickelt, er muss nur die PIN eingeben, das Geld nehmen und gehen.

Verkapselung: Es geht darum, die sensiblen Daten eines Clas zu verstecken und somit einen Teil davon zu privatisieren. Es ist eine Möglichkeit, einige Informationen für seine Kunden geheim zu halten, indem man keinen Zugriff von außen darauf zulässt.

8voto

Rajesh Punkte 61

Nehmen wir das Beispiel eines Stapels. Er könnte mit einem Array oder einer verknüpften Liste implementiert werden. Aber die unterstützten Operationen sind Push und Pop.

Jetzt Abstraktion stellt nur die Schnittstellen push und pop zur Verfügung. Die zugrunde liegende Darstellung bleibt verborgen (handelt es sich um ein Array oder eine verknüpfte Liste?), und es wird eine wohldefinierte Schnittstelle bereitgestellt. Wie stellt man nun sicher, dass kein versehentlicher Zugriff auf die abstrahierten Daten erfolgt? Das ist der Punkt, an dem Verkapselung kommt herein. Zum Beispiel verwenden Klassen in C++ die Zugriffsspezifizierer, die sicherstellen, dass ein versehentlicher Zugriff und eine versehentliche Änderung verhindert werden. Außerdem wird dadurch, dass die oben genannten Schnittstellen öffentlich sind, sichergestellt, dass der Stack nur über die wohldefinierte Schnittstelle manipuliert werden kann. Dabei wurden die Daten und der Code, der sie manipulieren kann, aneinander gekoppelt (wir wollen hier nicht die Freundschaftsfunktionen ins Spiel bringen). Das heißt, der Code und die Daten sind aneinander gebunden oder gekapselt.

8voto

Devrath Punkte 39521

Abstraction y Encapsulation anhand eines einzigen verallgemeinerten Beispiels

------------------------------------------------------------------------------------------------------------------------------------

Wir alle benutzen Taschenrechner für die Berechnung komplexer Probleme!

image

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X