it-swarm.com.de

einkapselung vs. Abstraktionsbeispiel aus der realen Welt

Für ein Beispiel der Einkapselung kann ich mir die Interaktion zwischen einem Benutzer und einem Mobiltelefon vorstellen. Der Benutzer muss die interne Funktionsweise des Mobiltelefons nicht kennen, um ihn zu bedienen. Dies wird Abstraktion genannt. Aber wo passt die Kapselung in dieses Beispiel? Könnte jemand bitte etwas Licht auf dieses werfen?

39
crowso

Encapsulation ist ein Weg zum Erreichen von "Ausblenden von Informationen" Wenn Sie Ihrem Beispiel folgen, brauchen Sie nicht "Sie müssen wissen, wie das Mobiltelefon funktioniert, um zu funktionieren " damit. Sie haben ein Interface, um das Geräteverhalten zu verwenden, ohne Implementierungsdetails zu kennen.

Abstraction auf der anderen Seite kann als die Möglichkeit erläutert werden, dasselbe Interface für verschiedene Objekte zu verwenden. Es können verschiedene Implementierungen derselben Schnittstelle vorhanden sein. Details werden durch Kapselung ausgeblendet.

67
davioooh

Abstraktion : Sie werden nie ein "Gerät" kaufen, sondern immer etwas genaueres kaufen: iPhone, GSII, Nokia 3310 ... Hier sind iPhone, GSII und N3310 konkrete Dinge, das Gerät ist abstrakt.

Encapsulation : Sie haben mehrere Geräte, alle haben einen USB-Anschluss. Sie wissen nicht, was für eine gedruckte Schaltung es gibt, Sie müssen nur wissen, dass Sie ein USB-Kabel daran anschließen können.

Abstraktion ist ein Konzept, das durch die Einkapselung erlaubt wird. Mein Beispiel war nicht das beste (es gibt keine echte Verbindung zwischen den beiden Blöcken).

Sie können die Kapselung auch ohne Abstraktion ausführen. Wenn Sie jedoch eine Abstraktion in Ihren Projekten verwenden möchten, benötigen Sie die Kapselung.

59
zessx

In allgemeinen Worten, Abstraktion verbirgt nur die komplexen Dinge hinter einer bestimmten Prozedur, damit die Prozedur einfach aussieht.
Beispiel: Monitor EIN/AUS :: - Der Benutzer muss nicht viel über die Funktionsweise aller Chips wissen, die beim Ein- oder Ausschalten des Monitors auftreten zu wissen ist an Funktion ON-Monitor ist an und an Funktion OFF-Monitor ist aus ...

Oder besser nach einem Auto suchen - jeder weiß, dass es eine spezielle Getriebemaschine gibt, die den Gang wechselt. Niemand muss wissen, was alle Funktionen für einen Gangwechsel durchlaufen. Also, das ist Abstraktion (Vermeidung unerwünschter Implementierungen, um Komplexität zu vermeiden).

Wenn ein Entwickler eine gute Abstraktion bietet, werden Benutzer nicht versucht sein, einen Blick auf die internen Mechanismen des Objekts zu werfen.

Die Abstraktion wird erreicht, indem eine Klasse mit einer oder mehreren abstrakten Methoden abstrakt gemacht wird. Das ist nichts anderes als ein wesentliches Merkmal, das von der Klasse, die es erweitert, implementiert werden sollte. e.g. Wenn Sie ein Auto erfinden/entwerfen, definieren Sie Eigenschaften wie: Auto sollte 4 Türen, Bremse, Lenkrad usw. haben. Daher sollte jeder, der dieses Design verwendet, diese Eigenschaften einschließen. Die Implementierung ist nicht der Kopf jeder Abstraktion. Es werden nur die Merkmale definiert, die einbezogen werden sollen.

Die Kapselung beschränkt einen Benutzer auf das Befolgen einer bestimmten Prozedur, um auf die Steuerung eines bestimmten Prozesses zuzugreifen. Sie bietet lediglich Sicherheit und gewährleistet die Robustheit des Systems.

Beispiel: Wir können die Personalabteilung in einem Unternehmen als eine Person betrachten, die nach dem Prinzip Encapsulation.i.e. arbeitet. Wir können nicht direkt mit anderen Abteilungen sprechen, um über die Personalabteilung zu kommunizieren. Dies gewährleistet die Sicherheit und eine bessere Pflege der Unternehmensunterlagen.

Zusammen können wir ein Beispiel für ein UNDER CONSTRUCTION BUILDING.. nehmen, wo wir sagen können, dass Dinge wie 'nein. von Managern benötigt, Arten von Materialien, Anzahl der Arbeiter usw. als Abstraktion, wie sie dort in jedem Hochbau benötigt.

Gleichzeitig kann die Einbeziehung eines jeden dieser Bereiche in einen AUFTRAGNEHMER, der als Mittler zwischen den Arbeitern und dem Bauinvestor fungiert, als Verkapselung angesehen werden. As verbirgt alle oben genannten Eigenschaften in einer Entität.

Wenn Sie bis jetzt verstanden hätten, können Sie sagen, dass Abstraktion nur eine Teilmenge von ENCAPSULATION.i.e ist. Jede Entität, die Abstraktion ausführt, ist intern gekapselt, aber alles, was Verkapselung zeigt, muss nicht immer Abstraktion sein.

z.B. .ToString() Die in fast jeder Klasse definierte Methode ist die Implementierung von Abstraction, da wir nicht die Funktionalität haben. Wir kümmern uns nur darum, dass fast alles in string geändert wird. Und wenn es als Einheit zusammengesetzt wird, ist es gekapselt too..Aber die privaten Mitglieder, auf die wir uns verstecken und die wir durch Properties zugreifen, sind nur ein Beispiel für die Verkapselung, da dies im Grunde genommen unter Berücksichtigung der Datensicherheit erfolgt .. !!

Hoffe das beantwortet deine Frage .. !!

21
Rahul Ranjan

Encapsulation dient dazu, die Variablen oder etwas innerhalb einer Klasse auszublenden, um die Verwendung von Unbefugten zu verhindern. Die öffentlichen Methoden wie Getter und Setter greifen also darauf zu, und die anderen Klassen rufen diese Methoden für den Zugriff auf

Abstraction beinhaltet die Möglichkeit, Objekte zu definieren, die abstrakte "Akteure" darstellen, die Arbeiten ausführen, Berichte erstellen und ihren Zustand ändern und mit anderen Objekten im System "kommunizieren" können.

Betrachten Sie das folgende Echtzeit-Beispiel:

Encapsulation: Als Fahrer wissen Sie, wie Sie das Fahrzeug durch Drücken der Starttaste starten, und interne Details der Startvorgänge werden Ihnen verborgen. So ist der gesamte Startvorgang für Sie verborgen, ansonsten können wir feststellen, dass der Startvorgang für Sie gekapselt ist.

ODER

Das Antriebsrad ist gekapselt, wenn Sie das Rad von Ihnen drehen.

Abstraktion:

Bevor wir etwas über Abstraktion erwähnen, können wir drei verschiedene Benutzer hier nennen (ich nenne sie als Entität)

1) Sie 2) Lokalmechaniker 3) Experte

You Entity: Da Sie nur wissen, wie Sie das Auto per Knopfdruck starten, werden alle anderen Vorgänge hinter der Szene von Ihnen abstrahiert.

Local Mechanic Entity: Unser lokaler Mechaniker weiß etwas von der Implementierung des Startens des Autos, dh er kann die Motorhaube des Autos öffnen und das Batteriekabel oder den Unterlegkeil überprüfen .

Expert Entity: Da unser Experte (Konstrukteur des Autos) alle Mechanismen unseres Autos kennt, kann er es sehr schnell reparieren. Kurz gesagt kennt Expert Entity alle Implementierungen des Autos.

Der Betrieb des Autos ist vollständig von Ihnen abstrahiert und teilweise in Local Mechanic Entity und vollständig in Expert Entity implementiert. Sie sind also eine abstrakte Klasse mit nur abstrakten Methoden. Local Mechanic Entity hat Sie erweitert (da er auch ein normaler Benutzer ist), und er hat einige der Methoden implementiert, und zuletzt hat unser Experte Entity Local Mechanic erweitert und alle Methoden implementiert.

Ich denke, das ist ein gutes Beispiel.

15
Sameer Kazi

Alles hat viele Eigenschaften und Verhaltensweisen, also nehmen Sie jedes Objekt mit, das Sie möchten: TV, Handy, Auto, Mensch oder ähnliches.

Abstraktion:

  1. Auswählen der Essenz eines Objekts, das Sie wirklich benötigen
  2. Mit anderen Worten, wählen Sie die gewünschten Eigenschaften aus dem Objekt Beispiel:
    ein. TV - Sound, Visuals, Stromversorgungseingang, Kanaleingang.
    b. Mobile - Taste/Touchscreen, Ein-/Aus-Taste, Lautstärketaste, SIM-Port.
    c. Auto - Lenkung, Bremse, Kupplung, Beschleuniger, Schlüsselloch.
    d. Mensch - Stimme, Körper, Sehkraft, Hören, Gefühle. 

Kapselung:

  1. Verbergen der Details eines Objekts, das Sie nicht benötigen
  2. Mit anderen Worten, blenden Sie die Eigenschaften und Vorgänge aus, die Sie nicht für das Objekt benötigen. Sie sind jedoch erforderlich, damit das Objekt ordnungsgemäß funktioniert. __ Beispiel:
    ein. TV - Interne Anschlüsse und Anschlüsse für Lautsprecher, Display, Stromverteilungs-S/W-Komponenten, Kanalmechanismus.
    b. Mobile - Wie wird die Eingabe analysiert und verarbeitet? Wie drückt man eine Taste ein/aus oder ändert die Lautstärke? Wie wird eine Verbindung zu Dienstanbietern hergestellt?.
    c. Auto - Wie das Drehen der Lenkung das Auto dreht, Wie langsam bremst oder das Auto anhält, Wie die Kupplung funktioniert, Wie das Gaspedal die Geschwindigkeit erhöht, Wie das Schlüsselloch ein-/ausgeschaltet wird.
    d. Mensch - Wie wird die Stimme produziert, Was ist im Körper, Wie funktioniert das Sehvermögen, Wie funktioniert das Hören? Wie erzeugen und bewirken Emotionen? 

ABSTRACT alles was du brauchst und ENCAPSULATE alles was du nicht brauchst;)

12
Sandeep Kumar

Der Wortlaut Ihrer Frage ist ungewöhnlich - Abstraktion vs. Einkapselung? Es sollte sein - jemand erklärt Abstraktion und Einkapselung ...

Abstraktion versteht das Wesen der Sache. 

Ein reales Beispiel ist abstrakte Kunst. Die Künstler dieses Stils versuchen, die Essenz der Sache einzufangen/zu malen, die es immer noch erlaubt, die Sache zu sein. Dieser braune Abstrich von vier Linien fängt die Essenz dessen ein, was ein Stier ist. 

Kapselung ist Black Boxing.

Ein Handy ist ein gutes Beispiel. Ich habe keine Ahnung, wie das Mobiltelefon mit einem Satelliten, einem Turm oder einem anderen Telefon verbunden ist. Ich habe keine Ahnung, wie das verdammte Ding meine Tastendrücke versteht oder wie es Bilder an eine E-Mail-Adresse oder eine andere Telefonnummer aufnimmt und sendet. Ich habe keine Ahnung von den komplizierten Details der meisten Funktionen eines modernen Smartphones. Aber ich kann es benutzen! Die Telefone verfügen über Standardschnittstellen (ja - sowohl wörtlich als auch Softwaredesign), die es jemandem, der die Grundlagen eines Telefons versteht, ermöglicht, fast alle zu verwenden.

Wie hängen die beiden zusammen? 

Sowohl Abstraktion als auch Verkapselung sind grundlegende Grundlagen objektorientierten Denkens und Designs. Also in unserem Handy-Beispiel. Die Vorstellung eines Smartphones ist eine Abstraktion, in der bestimmte Funktionen und Dienste eingebettet sind. Das iPhone und das Galaxy sind weitere Abstraktionen der Abstraktion auf höherer Ebene. Ihr physisches iPhone oder Galaxy ist ein konkretes Beispiel für mehrere Abstraktionsebenen, die gekapselte Funktionen und Dienste enthalten.

7
mson

Abstraktion Mittel Wir konzentrieren uns auf die wesentlichen Eigenschaften eines Dings anstatt auf ein bestimmtes Beispiel, und wir verwerfen automatisch das, was unwichtig oder irrelevant ist.

Beispiel Wir schreiben eine Bankkontoklasse. Wesentliche Qualitäten des Bankkontos sind: Eröffnungsdatum, Titel des Kontos, Kontonummer, Kontostand usw.

Encapsulation Bezeichnet die Idee der Kapselung oder des Umschließens von etwas, nicht nur, um den Inhalt zusammenzuhalten, sondern auch, um den Zugriff auf Formulare zu schützen und einzuschränken.

Beispiel In unserer Bankenklasse Jemand, der auf das Attribut "Kontostand" zugreift und versucht, es zu ändern, kann der Versuch erfolgreich sein, wenn keine Kapselung vorliegt. 

5
Shan

Encapsulation hilft bei der Einhaltung des Single-Responsibility-Prinzips und Abstraktion hilft bei der Einhaltung von Code to Interface und nicht der Implementierung. 

Angenommen, ich habe eine Klasse für Auto: Service Provider Class und Driver Class: Service Consumer Class. 

Für Abstraktion: Wir definieren abstrakte Klassen für CAR und definieren alle darin enthaltenen abstrakten Methoden, die im Auto wie folgt verfügbar sind: changeGear (), applyBrake (). 

Nun wird das eigentliche Auto (Betonklasse, z. B. Mercedes, BMW) diese Methoden auf seine eigene Weise implementieren und die Ausführung abstrahieren, und der Endbenutzer wendet immer noch einen Pausen- und Änderungsgang für eine bestimmte konkrete Fahrzeuginstanz an, und polymorphisch erfolgt die Ausführung wie in der konkreten Klasse definiert . 

Zur Verkapselung: Sagen Sie jetzt, Mercedes bietet eine neue Funktion/Technologie: Anti Skid Braking, bei der Implementierung von applyBrake () kapselt es diese Funktion in der applyBrake () -Methode und sorgt so für Kohäsion, und der Service-Konsument wird weiterhin über die gleiche Methode applyBrake zugreifen () des Autoobjekts . Somit lässt Encapsulation in derselben konkreten Klassenimplementierung weiter.

3
user3576978

Kapselung verbirgt Informationen.

Abstraktion verbirgt die Funktionsdetails.

Die Kapselung wird durch Erstellen der Klasse durchgeführt. Die Abstraktion wird durch Erstellen von abstrakten Klassen oder Interfaces über Ihrer Klasse erreicht. 

In dem in der Frage angegebenen Beispiel verwenden wir die Klasse für ihre Funktionalität und wir kümmern uns nicht darum, wie das Gerät dies erreicht. Wir können also sagen, dass die Details des Telefons von uns "abstrahiert" werden. 

Die Kapselung verbirgt, WAS DAS TELEFON verwendet, um das zu erreichen, was es tut. Abstraktion verbirgt sich, wie es geht.-

3
Navin Israni

Ich habe das Gefühl, dass die Einkapselung möglicherweise sinnvoller ist, um zu diskutieren, wenn Sie sehen, WIE NICHT IN DER PROGRAMMIERUNG TUN. Betrachten Sie beispielsweise eine Autoklasse wie folgt.

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

Der Client-Code kann wie oben beschrieben über der Fahrzeugklasse verwendet werden. 

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
  }
}

Mehr dazu unter: http://brevitaz.com/encapsulation-example-benefits-Java/

Dies ist ein unkontrollierter Zugriff auf die Fahrzeuggeschwindigkeit und andere Variablen. Durch die Kapselung kann die Autoklasse die vollständige Kontrolle darüber haben, wie die Datenvariablen innerhalb der Autoklasse geändert werden können.

Jede konkrete Entität, die ein gewisses Verhalten aufweist, ist ein Beispiel für die Einkapselung. Das Verhalten wird bereitgestellt, indem man etwas einwickelt und etwas vor dem Client versteckt. Im Fall von Mobiltelefonen handelt es sich um Signale, Chips, Schaltkreise, Batterie und so weiter. 

Zur Abstraktion desselben Beispiels kann ein normaler Benutzer sagen, ich bin mit allem in Ordnung, mit dem ich Anrufe tätigen und Anrufe annehmen kann. Diese Abstraktion kann durch jedes konkrete Handy ersetzt werden. Check out Abstraktionsbeispiele .

2
Vishal Shukla

Lassen Sie mich meine 2 Cents einer realen Beispielanalogie nahe der IT geben.

Nehmen wir an, Sie haben eine Abonnement-Site, z. B. eine WordPress-Site

Jeder Benutzer hat eine Rolle, z. B. Admin, Abonnent usw. Viele Benutzer können Admins, Abonnenten usw. sein.

Die Abstraktion hier ist spiegelt in der Tatsache wider, dass jeder Benutzer mit Administratorrolle eine Reihe von Dingen ausführen kann, es ist egal, welcher Benutzer dies ist (dies ist ein Beispiel für Abstraktion) .

Andererseits haben Abonnentenbenutzer keinen Zugriff auf bestimmte Einstellungen der Site. Daher sind einige Interna der Anwendung für normale Abonnenten gekapselt (dies ist ein Beispiel für encapsulation).

Wie man sehen kann, dass Abstraktion und Verkapselung relative Begriffe sind, gelten sie für etwas Spezifisches.

Man kann dieser Argumentationslinie folgen und Polymoprhism und Vererbung erklären.

Zum Beispiel könnten Super-Admin-Benutzer alles tun, was Administratoren tun könnten, und noch mehr. Wenn Administratorrollen ein Update in der Funktionalität erhalten, erhalten Super-Admins das gleiche Update. So kann man hier ein Beispiel für Vererbung sehen, in der Super-Admin-Rollen erben alle Eigenschaften von Admin-Rollen und diese erweitern. Beachten Sie, dass Admins für den Großteil der Website mit Super-Admins austauschbar sind (dh ein Super-Admin-Benutzer kann problemlos anstelle eines Admin-Benutzers verwendet werden, im Allgemeinen nicht umgekehrt).

1
Nikos M.

Wenn Sie ein wichtiges Fernsehgerät gesehen haben, sind TV-Anschlüsse und Farbfernseher in der TV-Hülle verborgen, die für Zuschauer wie wir nicht sichtbar war, und nur notwendige Dinge eines Fernsehgeräts wie TV-Kanaltasten, TV-Lautstärketasten und Ein-/Ausschalter Kabelfernseher und TV-Fernbedienung für die Verwendung durch Zuschauer. Dies bedeutet, dass Fernsehgeräte, TV-Anschlüsse und Farbfernseher unerwünschte Daten sind und nicht für die Betrachter benötigt werden, um zu sehen, dass sie vor der Welt verborgen sind

Einkapselung bedeutet also, die wichtigen Merkmale einer Klasse zu verbergen, die nicht benötigt wurde, um außerhalb einer Klasse exponiert zu werden, und nur notwendige Dinge einer Klasse offenzulegen. Hier verborgene Teile einer Klasse wirken wie Encapsulation und exponierte Teile einer Klasse wie Abstraktion.

0
Biju kalanjoor

Abstraktion 

Es wird verwendet, um die Komplexität von OOPs zu verwalten. Durch die Verwendung dieser Eigenschaft können wir dem Benutzer wesentliche Merkmale eines Objekts zur Verfügung stellen, ohne seine Hintergrunderklärungen einzuschließen. Wenn Sie zum Beispiel eine Nachricht an einen Freund senden, schreiben wir einfach die Nachricht, sagen "hiiii" und klicken auf "Senden". Die Nachricht wird an ihr Ziel gesendet (ihr Freund). Hier sehen wir die Abstraktion am Arbeitsplatz, dh wir kümmern uns weniger um die interne Arbeitsweise von Mobiltelefonen, die für das Senden und Empfangen von Nachrichten verantwortlich sind

0
Akash Singh

Man denke nur an Abstraktion als das Ausblenden der Tastatur und der Bildschirmdetails, Encapsulation als das Ausblenden der internen Schaltkreise, die sie verbinden.

0
user3757331

Abstraktion

Wir verwenden viele Abstraktionen im täglichen Leben. Betrachten Sie ein Auto. Die meisten von uns haben eine abstrakte Sicht auf die Funktionsweise eines Autos. Wir wissen, wie man damit umgeht, damit es das tut, was wir wollen: wir Gas einfüllen, einen Schlüssel drehen, einige Pedale drücken und so weiter. Aber wir verstehen nicht unbedingt, was im Inneren des Autos vor sich geht, um es in Bewegung zu setzen, und wir brauchen nicht ... .. Millionen von uns benutzen Autos jeden Tag, ohne die Details ihrer Funktionsweise zu verstehen oder arbeiten!

Ein Programm kann als Satz interagierender Abstraktionen gestaltet werden. In Java werden diese Abstraktionen in Klassen erfasst. Der Schöpfer einer Klasse muss natürlich sein Interface kennen, so wie der Fahrer eines Autos das Fahrzeug benutzen kann, ohne zu wissen, wie der Motor funktioniert.

Verkapselung

Stellen Sie sich ein Banksystem vor. Das Bankensystem verfügt über Eigenschaften wie Konto-Nr., Konto-Typ, Saldo .. etc. Wenn jemand versucht, den Kontostand des Kontos zu ändern, kann der Versuch erfolgreich sein, wenn keine Kapselung vorliegt. Durch die Kapselung kann die Klasse die vollständige Kontrolle über ihre Eigenschaften haben.

0

Ich denke, eine Eierschale kann die Einkapselung und den Inhalt die Abstraktion berücksichtigen. Die Shell schützt die Informationen. Sie können den Inhalt eines Eies ohne die Schale nicht haben. , LOL

0
Humberto

Eine Abstration, die interne Details für die Außenwelt verbirgt, zum Beispiel erstellen Sie eine Klasse (wie z. B. einen Rechner der Klasse), aber für den Endgebrauch stellen Sie ein Objekt der Klasse bereit. Mit Hilfe des Objekts werden sie spielen und Operationen ausführen. Er weiß nicht, was Art des Mechanismus wird intern verwendet. Objekt der Klasse in abstrakter Form.

Encapsulation ist die Technik, mit der die Felder in einer Klasse privat gemacht werden und der Zugriff auf die Felder über öffentliche Methoden ermöglicht wird. Wenn ein Feld als privat deklariert ist, kann niemand außerhalb der Klasse darauf zugreifen. Dadurch werden die Felder innerhalb der Klasse ausgeblendet. Aus diesem Grund wird die Kapselung auch als Data Hiding bezeichnet. Beispiel: Klassenrechner, der private Methoden enthält getAdd, getMultiply.

Meine obige Antwort wird Ihnen helfen, das Konzept zu verstehen.

0
Apurva