Unterschied zwischen den Konzepten [duplizieren]

9

Ich habe an einem Interview für Java-Programmierer teilgenommen. Nach ein paar persönlichen Fragen hat mir der Interviewer die Frage "Was ist Verkapselung und Abstraktion?" gestellt. Ich war wirklich glücklich mit der Frage, und ich habe darauf geantwortet, dass die Implementierungsdetails verborgen sind sind nicht notwendig für den Benutzer zu wissen. Und Abstraktion zeigt dem Benutzer nur die wichtigen Details. nur Sekunden nach meiner Antwort hatte der Interviewer eine andere Frage für mich. zeigt dem Benutzer nur die wichtigen Details, das heißt, irrelevante Daten wie Implementierungsdetails dem Benutzer zu verbergen. ist es?

Ich habe es als ja geantwortet !!!

Es kommt eine andere Frage von. So, was ist der Unterschied zwischen Abstraktion und Einkapselung. Ich denke, es gibt keinen Unterschied nach Ihrer Antwort.

Ich war wie ich weiß nicht, meine Hände waren gefroren, war ein wirklich schlechter Tag für mich

Kann jemand erklären, wie Sie antworten würden, wenn jemand Ihnen eine solche Frage stellt

    
Fazeela Abu Zohra 06.12.2013, 06:04
quelle

6 Antworten

3

Verkapselung im Sinne des Laien bedeutet einfach das Umhüllen (Einkapseln).

In Bezug auf Java bedeutet es, dass Sie Ihren Code zusammen schreiben und nur die Teile davon ausstellen, die exponiert werden sollen. Aber es wird oft mit dem Verstecken von Daten in Verbindung gebracht. Zum Beispiel, wenn Sie Ihre Instanzmethode / Funktion privat definieren, kann nur von derselben Klasse zugegriffen werden. Auf diese Weise werden Ihre Instanzvariablen / Funktionen nicht direkt verfügbar gemacht. Warum? weil der Benutzer nichts damit zu tun hat.

Abstraktion wieder in Laien ist ein Konzept, das aufgebaut ist, um die Komplexität dahinter zu verbergen. Nimm zum Beispiel Computer. Sie waren eine Abstraktion zum Prozessor, die die eigentliche Berechnung durchführen, die wiederum Chips involvierte, die Gatter miteinbeziehen. Für den gewöhnlichen Menschen wäre es schwierig, in Bezug auf die verwendeten Tore zu sprechen. SO wurde das Konzept auf Computer abstrahiert.

In Bezug auf Java-Abstraktion bedeutet das Verstecken von Implementierungsdetails vom Benutzer. Dazu gehört, eine Klasse abstrakt zu machen oder eine Schnittstelle zu definieren. Alle Benutzer sind mit der Schnittstelle konfrontiert (eine Reihe von Funktionen oder APIs). Er muss nicht wissen, dass es sich um eine interne Implementierung handelt. Alles was er wissen muss, welche Eingaben er liefern muss (Argumente) und was für eine entsprechende Ausgabe (Rückgabetyp) wäre.

Zum besseren Verständnis des Java-Beispiels siehe diese Frage.

    
Aniket Thakur 06.12.2013, 06:17
quelle
1
  

Was ist Kapselung?

Die Verkapselung ist nichts anderes, als alles zu schützen, was sich ändern kann. Rational hinter Einkapselung ist, dass, wenn irgendeine Funktionalität, die gut in Code eingekapselt ist, d. h. an nur einer Stelle gehalten wird und nicht um den Code verstreut ist, leicht zu ändern ist. Dies lässt sich mit einem einfachen Beispiel für die Kapselung in Java besser erklären. wir alle wissen, dass Konstruktor verwendet wird, um ein Objekt in Java zu erstellen, und Konstruktor kann Argumente akzeptieren. Angenommen, wir haben eine Klasse. Darlehen hat einen Konstruktor und in verschiedenen Klassen haben Sie eine Darlehensinstanz mit diesem Konstruktor erstellt. Jetzt ändern sich die Anforderungen und Sie müssen das Alter des Kreditnehmers sowie während der Kreditaufnahme berücksichtigen. Da dieser Code nicht gut gekapselt ist, dh nicht an einer Stelle beschränkt ist, müssen Sie überall ändern, wo Sie diesen Konstruktor aufrufen, dh für eine Änderung müssen Sie mehrere Dateien anstelle von nur einer Datei ändern, die fehleranfälliger und mühsamer ist, obwohl es sein kann getan mit Refactoring-Funktion der erweiterten IDE wäre es nicht besser, wenn Sie nur an einer Stelle ändern müssen? Ja, das ist möglich, wenn wir die Loan-Erstellungslogik in einer Methode kapseln. CreateLoan () und Client-Code rufen diese Methode auf, und diese Methode stuft intern das Loan-Objekt ein. In diesem Fall müssen Sie nur diese Methode anstelle des gesamten Client-Codes ändern.

Beispiel

%Vor%

In diesem Beispiel von Encapsulation in Java sehen Sie, dass alle Membervariablen privat gemacht werden, so dass sie gut gekapselt sind. Sie können diese Variable nur innerhalb dieser Klasse ändern oder auf sie zugreifen. Wenn Sie der Außenwelt erlauben möchten, auf diese Variablen zuzugreifen, ist es besser, einen Getter und Setter zu erzeugen, z. getLoan () ermöglicht Ihnen, jede Art von Validierung, Sicherheitsüberprüfung vor Rücklieferung durchzuführen, so dass Sie die vollständige Kontrolle darüber haben, was Sie tun möchten, und einen einzigen Zugangskanal für den Kunden, der kontrolliert und verwaltet wird.

  

Was ist Abstraktion?

Eine abstrakte Klasse ist etwas, das unvollständig ist, und Sie können keine Instanz der abstrakten Klasse erstellen. Wenn Sie es verwenden möchten, müssen Sie es vervollständigen oder konkretisieren, indem Sie es erweitern. Eine Klasse heißt konkret, wenn sie keine abstrakte Methode enthält und alle abstrakten Methoden implementiert, die von der abstrakten Klasse oder Schnittstelle übernommen wurden, die sie implementiert oder erweitert hat. Übrigens hat Java das Konzept abstrakter Klassen, abstrakte Methode, aber eine Variable kann in Java nicht abstrakt sein. Ein beliebtes Beispiel für die abstrakte Klasse in Java ist ActionListener mit der abstrakten Methode actionPerformed (ActionEvent ae). Diese Methode wird aufgerufen, wenn ein ActionEvent ausgelöst wird, wenn Sie auf JButton klicken. Es ist in Java üblich, ActionListener mit JButton zu verknüpfen, indem die abstrakte Methode actionPerformed (ActionEvent ae) mit der anonymen Klasse implementiert wird, wie im folgenden Beispiel gezeigt:

%Vor%

In der Java-Schnittstelle ist eine andere Art der Bereitstellung von Abstraktion, Schnittstellen sind standardmäßig abstrakt und enthalten nur öffentliche statische, endgültige Konstante oder abstrakte Methoden. Seine sehr häufige Interviewfrage ist, wo sollten wir abstrakte Klassen verwenden und wo sollten wir Java Interfaces verwenden? Aus meiner Sicht ist dies wichtig zu verstehen, um eine bessere Java-Anwendung zu entwerfen. Sie können Java-Schnittstelle verwenden, wenn Sie nur den Namen der Methoden Ihrer Klasse kennen sollte z für Server sollte es start () und stop () -Methode haben, aber wir wissen nicht, wie genau diese Start-und-Stopp-Methode funktioniert. Wenn Sie etwas vom Verhalten beim Entwerfen der Klasse kennen und das in allen Unterklassen üblich bleiben würde, fügen Sie das in die abstrakte Klasse ein. Schnittstelle wie Runnable sind ein gutes Beispiel für Abstraktion in Java, die verwendet wird, um Aufgaben zu abstrahieren, die von mehreren Threads ausgeführt werden.

    
Prashant Shilimkar 06.12.2013 06:24
quelle
0

Abstraktion ist die Übung, eine Basisklasse "abstrakt" zu machen und dann ihre Funktionalität zu erweitern. Eine abstrakte Klasse ist etwas, das in einer konkreten Sache nicht existiert; Sein einziger Zweck ist es, erweitert zu werden. Denken Sie daran, wenn Sie Klassen schreiben, um verschiedene Arten darzustellen. Alle deine verschiedenen Arten könnten eine abstrakte Tierklasse erweitern, da sie alle gemeinsame Eigenschaften als Tiere haben. Allerdings würden Sie niemals ein Animal-Objekt instantiieren, da jedes Tier, das Sie auf der Welt sehen, ein Eichhörnchen, ein Hund oder ein Fisch ist ... oder eine Art konkrete Umsetzung dieser Basis, abstrakte Tierklasse.

Bei der Kapselung werden Ihre Klassenvariablen privat gemacht und dann der Zugriff auf sie von Methoden zum Abrufen und Festlegen ermöglicht. Der Zweck davon ist die Art, wie auf Ihre Daten zugegriffen wird und wie sie implementiert wird. Wenn Sie zum Beispiel eine Variable mit einer Anforderung haben, die bei jeder Änderung eine zweite Variable um 1 erhöht, dann würden Sie diese Funktionalität einkapseln; Auf diese Weise ist Ihr Code zuverlässiger, weil Sie nicht jedes Mal daran denken müssen, diese Regel einzuhalten, wenn Sie auf die ursprüngliche Variable zugreifen.

Wenn Sie bestimmte Codebeispiele benötigen, würde ich Ihnen empfehlen, nur eine Google-Suche durchzuführen, da es viele Beispiele gibt. Hier sind zwei:

Ссылка Ссылка

    
Mr.G 06.12.2013 06:10
quelle
0

Ich würde sagen, Encapsulation ist eine Methode zur Implementierung der Datenabstraktion.

Einkapselung bedeutet, Daten und Funktionen in einer einzigen Einheit zusammenzufassen.

Abstraktion ist, was wir nach der Verkapselung bekommen.

    
imbatman 06.12.2013 06:11
quelle
0

Die Einkapselung ist ein Wrapping von Daten in eine einzelne Einheit. Beispiel class

Abstraktion hast du richtig

    
AJ. 06.12.2013 06:05
quelle
0

Aus dieser Antwort

Abstraction - Abstraktion ist das Konzept / die Technik, die verwendet wird, um zu identifizieren, was die Außenansicht eines Objekts sein soll. Nur die erforderliche Schnittstelle verfügbar machen.

Encapsulation - Verbindet Daten und verwandte Funktionen zu einer Einheit. Es erleichtert die Abstraktion und das Ausblenden von Informationen. Zulassen von Features wie Mitgliederzugriff auf die Einheit angewendet werden, um Abstraktion und Informationsverbergung zu erreichen

    
Prasad 06.12.2013 06:19
quelle

Tags und Links