451 Stimmen

Unterschied zwischen Abstraktion und Verkapselung?

Was ist der genaue Unterschied zwischen Kapselung und Abstraktion?

5voto

Sanchit Punkte 1105

Ich werde versuchen, Encapsulation auf einfache Weise zu demonstrieren. Mal sehen

  • Die Zusammenfassung von Daten und Funktionen in einer einzigen Einheit (genannt Klasse) wird als Verkapselung bezeichnet. Verkapselung enthält und verbirgt Informationen über ein Objekt, wie interne Datenstrukturen und Code.

Verkapselung ist -

  • Komplexität verstecken,
  • Binden von Daten und Funktionen,
  • Komplizierte Methoden privat machen,
  • Instanzvariablen privat machen,
  • Unnötige Daten und Funktionen vor dem Endbenutzer verstecken.

Verkapselung implementiert Abstraktion.

Und Abstraktion ist -

  • Zeigen, was nötig ist,
  • Die Daten müssen vom Endnutzer abstrahiert werden,

Hier ein Beispiel.

Die folgende Abbildung zeigt eine grafische Benutzeroberfläche für "Kundendetails, die in eine Datenbank eingefügt werden sollen".

Customer Screen GUI

Anhand des Bildes können wir sagen, dass wir eine Kundenklasse benötigen.

Schritt - 1: Was braucht meine Kundenklasse?

d.h.

  • 2 Variablen zum Speichern von Kundencode und Kundenname.
  • 1 Funktion zum Hinzufügen des Kundencodes und des Kundennamens in die Datenbank.

    Namensraum CustomerContent { public class Kunde { public string CustomerCode = ""; public string Kundenname = ""; public void ADD() { //mein DB-Code wird hier eingefügt }

Nur die ADD-Methode allein wird hier nicht funktionieren.

Schritt -2: Wie wird die Validierung funktionieren, ADD-Funktion handeln?

Wir benötigen den Code für die Datenbankverbindung und den Validierungscode (zusätzliche Methoden).

public bool Validate()
{
    //Granular Customer Code and Name
    return true;
}

public bool CreateDBObject()
{
    //DB Connection Code
    return true;
}

class Program
{
static void main(String[] args)
{
CustomerComponent.Customer obj = new CustomerComponent.Customer;

obj.CustomerCode = "s001";
obj.CustomerName = "Mac";

obj.Validate();
obj.CreateDBObject();

obj.ADD();
}
}

Jetzt ist es nicht mehr notwendig, dem Endbenutzer die zusätzlichen Methoden (Validate(); CreateDBObject() [komplizierte und zusätzliche Methode]) zu zeigen, der Endbenutzer muss nur den Kundencode, den Kundennamen und die Schaltfläche ADD (Hinzufügen) sehen und kennen, mit der der Datensatz hinzugefügt wird. Der Endbenutzer kümmert sich nicht darum, WIE er die Daten in die Datenbank einträgt.

Schritt -3: Private die zusätzlichen und komplizierten Methoden, die nicht mit der Interaktion des Endbenutzers.

So machen diese komplizierte und Extra-Methode als Private statt Public (dh Ausblenden dieser Methoden) und das Löschen der obj.Validate(); obj.CreateDBObject(); von main in der Klasse Programm erreichen wir Verkapselung.

Mit anderen Worten: Die Vereinfachung der Schnittstelle zum Endbenutzer ist die Verkapselung.

Der Code sieht nun wie folgt aus -

namespace CustomerContent
{
public class Customer
{
public string CustomerCode = "";
public string CustomerName = "";
public void ADD()
{
   //my DB code will go here
}

private bool Validate()
{
    //Granular Customer Code and Name
    return true;
}

private bool CreateDBObject()
{
    //DB Connection Code
    return true;
}

class Program
{
static void main(String[] args)
{
CustomerComponent.Customer obj = new CustomerComponent.Customer;

obj.CustomerCode = "s001";

obj.CustomerName = "Mac";

obj.ADD();
}
}

Zusammenfassung:

Schritt -1: Was braucht meine Kundenklasse? ist Abstraktion.

Schritt -3: Schritt -3: Private die zusätzliche und komplizierte Methoden, die nicht mit End User's Interaktion ist Kapselung.

P.S. - Der obige Code ist hart und schnell.

4voto

Vikas Verma Punkte 3364

De este

Unterschied zwischen Verkapselung und Abstraktion in OOPS

Abstraktion und Kapselung sind zwei wichtige Konzepte der objektorientierten Programmierung (OOPS). Verkapselung und Abstraktion sind zwei miteinander verbundene Begriffe.

Real Life Unterschied zwischen Kapselung und Abstraktion

Verkapseln bedeutet verstecken. Sie können sich die Verkapselung wie eine Kapsel (Tablette) vorstellen, in der die Medizin versteckt ist. Encapsulation ist ein Wrapping, also ein Verstecken von Eigenschaften und Methoden. Encapsulation wird verwendet, um den Code und die Daten in einer einzigen Einheit zu verstecken und die Daten vor der Außenwelt zu schützen. Eine Klasse ist das beste Beispiel für Verkapselung.

Abstraktion bedeutet, dass nur die notwendigen Details für den vorgesehenen Benutzer angezeigt werden. Wie der Name schon sagt, ist Abstraktion die "abstrakte Form von etwas". Wir verwenden Abstraktion in Programmiersprachen, um abstrakte Klassen zu erstellen. Eine abstrakte Klasse stellt eine abstrakte Ansicht der Methoden und Eigenschaften einer Klasse dar.

Implementierungsunterschied zwischen Kapselung und Abstraktion

  1. Die Abstraktion wird mit Hilfe von Schnittstellen und abstrakten Klassen umgesetzt, während die Kapselung mit Hilfe von privaten und geschützten Zugriffsmodifikatoren umgesetzt wird.

  2. OOPS nutzt die Kapselung, um die Integrität eines Typs durchzusetzen (d. h. um sicherzustellen, dass die Daten in angemessener Weise verwendet werden), indem Programmierer daran gehindert werden, auf Daten auf eine nicht beabsichtigte Weise zuzugreifen. Durch die Verkapselung kann nur eine bestimmte Gruppe von Funktionen auf die Daten zugreifen. Der Sammelbegriff für Datentypen und Operationen (Methoden), die mit Zugriffsbeschränkungen (öffentlich/privat usw.) gebündelt sind, ist eine Klasse.

4voto

GntS Punkte 609

Der folgende Absatz hat mir geholfen zu verstehen, wie sie sich voneinander unterscheiden:

Die Datenkapselung ist ein Mechanismus zur Bündelung der Daten Funktionen, die sie verwenden, und die Datenabstraktion ist ein Mechanismus, der Datenabstraktion ist ein Mechanismus, der nur die Schnittstellen offenlegt und die Implementierungsdetails vor dem Benutzer.

Sie können mehr lesen aquí .

4voto

Arvind Punkte 138

Verkapselung ist das Einpacken von Komplexität in eine Kapsel, die Klasse und damit Encapsulation ist... Während Abstraktion die Eigenschaften eines Objekts ist, die es von anderen Objekten unterscheidet...

Abstraktion kann erreicht werden, indem eine Klasse abstrakt gemacht wird und eine oder mehrere Methoden abstrakt sind. Das ist nichts anderes als die Eigenschaft, die von der Klasse, die sie erweitert, implementiert werden sollte. Wenn man z.B. ein Auto erfindet/entwirft, definiert man Eigenschaften wie z.B. das Auto sollte 4 Türen, eine Bremse, ein Lenkrad usw. haben, so dass jeder, der dieses Design verwendet, diese Eigenschaften implementieren sollte. Die Implementierung ist nicht der Kopf jeder Abstraktion. Sie definiert nur die Merkmale, die enthalten sein sollten.

Die Kapselung wird dadurch erreicht, dass Daten und Verhalten in einer Kapsel, d.h. einer Klasse, gehalten werden, indem Zugriffsmodifikatoren wie public, private, protected zusammen mit Vererbung, Aggregation oder Komposition verwendet werden. Man zeigt also nur die benötigten Dinge, und auch nur in dem Umfang, den man zeigen möchte. d.h. public, protected, friendly & private ka funda z.B. beschließt GM, das oben beschriebene abstrahierte Design eines Autos zu verwenden. Aber sie haben verschiedene Produkte mit denselben Eigenschaften und fast derselben Funktionalität. Also schreiben sie eine Klasse, die die obige abstrakte Klasse erweitert. Sie sagt, wie das Getriebe funktionieren soll, wie die Bremse funktionieren soll, wie das Lenkrad funktionieren soll. Dann verwenden alle Produkte nur diese gemeinsame Funktionalität. Sie müssen nicht wissen, wie das Getriebe, die Bremse oder das Lenkrad funktioniert. Ein individuelles Produkt kann sicherlich mehr Funktionen haben, wie z.B. Klimaanlage oder automatische Verriegelung usw. ..

Beide sind mächtig, aber die Verwendung von Abstraktion erfordert mehr Fähigkeiten als Kapselung und größere Anwendungen/Produkte können ohne Abstraktion nicht überleben.

3voto

Mark Bailey Punkte 1001

Informationsverschleierung ist für Abstraktion oder Kapselung nicht unbedingt erforderlich. Informationen können ignoriert werden, müssen aber nicht versteckt werden.

Verkapselung ist die Fähigkeit, etwas als eine einzige Sache zu betrachten, auch wenn es aus vielen komplexen Teilen oder Ideen besteht. Ich kann zum Beispiel sagen, dass ich auf einem "Stuhl" sitze, anstatt mich auf die vielen verschiedenen Teile dieses Stuhls zu beziehen, von denen jedes ein bestimmtes Design und eine bestimmte Funktion hat und die alle genau zu dem Zweck zusammenpassen, meinen Hintern bequem ein paar Meter vom Boden entfernt zu halten.

Abstraktion wird durch Verkapselung ermöglicht. Da wir Objekte kapseln, können wir sie als Dinge betrachten, die in irgendeiner Weise miteinander in Beziehung stehen, anstatt uns in den subtilen Details der internen Objektstruktur zu verzetteln. Abstraktion ist die Fähigkeit, das große Ganze zu betrachten, ohne sich um kleine Details zu kümmern. Die Wurzel des Wortes ist abstrakt wie in der Zusammenfassung, die am Anfang einer wissenschaftlichen Arbeit erscheint, nicht abstrakt wie in einer Klasse, die nur als abgeleitete Unterklasse instanziiert werden kann.

Ich kann ehrlich sagen, dass ich, wenn ich mich auf meinen Stuhl setze, nie darüber nachdenke, wie die Struktur des Stuhls mein Gewicht auffängt und hält. Der Stuhl ist so anständig, dass ich mir über diese Details keine Gedanken machen muss. So kann ich meine Aufmerksamkeit auf meinen Computer richten. Und auch hier denke ich nicht über die Einzelteile meines Computers nach. Ich schaue nur auf einen Teil einer Webseite, der einen Textbereich darstellt, in den ich tippen kann, und ich kommuniziere in Worten und denke kaum darüber nach, wie meine Finger immer so schnell die richtigen Buchstaben auf der Tastatur finden, und wie die Verbindung zwischen dem Tippen dieser Tasten und dem Schreiben eines Beitrags in diesem Forum letztendlich hergestellt wird. Das ist die große Macht der Abstraktion. Weil man sich darauf verlassen kann, dass die unteren Ebenen des Systems konsistent und präzise arbeiten, haben wir mehr Zeit für größere Aufgaben.

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