Frage

Können Sie mir sagen, was der Unterschied ist? Abstraktion Und Informationen verbergen in der Softwareentwicklung?

Ich bin verwirrt.Abstraktion verbirgt Detail -Implementierung und Informationen, die Abstracts ganze Details von etwas verstecken.

Aktualisieren: Ich habe eine gute Antwort auf diese drei Konzepte gefunden. Siehe die separate Antwort unten für mehrere Zitate entnommen aus Dort.

War es hilfreich?

Lösung

Gehen Sie zur Quelle!Grady Booch sagt (in Object Oriented Analysis and Design, Seite 49, zweite Auflage):

Abstraktion und Kapselung sind komplementäre Konzepte:Die Abstraktion konzentriert sich auf das beobachtbare Verhalten eines Objekts ...Die Kapselung konzentriert sich auf die Implementierung, die zu diesem Verhalten führt ...Die Einkapselung wird am häufigsten durch das Verstecken von Informationen erreicht. Dies ist der Prozess, alle Geheimnisse des Objekts zu verbergen, die nicht zu ihren wesentlichen Merkmalen beitragen.

Mit anderen Worten:Abstraktion = das Objekt äußerlich;Kapselung (erreicht durch Informationsverbergung) = das Objekt intern,

Beispiel:Im .NET Framework ist die System.Text.StringBuilder Die Klasse bietet eine Abstraktion über einen String-Puffer.Mit dieser Pufferabstraktion können Sie mit dem Puffer arbeiten, ohne Rücksicht auf seine Implementierung zu nehmen.Somit können Sie Zeichenfolgen an den Puffer anhängen, ohne Rücksicht darauf, wie die StringBuilder Verfolgt intern Dinge wie den Zeiger auf den Puffer und verwaltet den Speicher, wenn der Puffer voll ist (was bei der Kapselung durch Ausblenden von Informationen der Fall ist).

rp

Andere Tipps

Der OP aktualisierte seine Frage mit mehreren Zitaten, die er gefunden hatte, nämlich in einem Artikel von Edward V.Berard mit dem Titel „Abstraktion, Kapselung und Informationsversteckung“.Ich veröffentliche eine leicht erweiterte und neu formatierte Version des OP-Updates erneut, da es sich um eine eigenständige Antwort handeln sollte.

(Alle Zitate sind dem oben genannten Artikel entnommen.)

Abstraktion:

„Ein Punkt, an dem die Abstraktion verwirrend ist, ist ihre Verwendung sowohl als Prozess als auch als Entität.Abstraktion als Prozess bezeichnet das Extrahieren der wesentlichen Details eines Gegenstands oder einer Gruppe von Gegenständen, während die unwesentlichen Details ignoriert werden.Abstraktion bezeichnet als Entität ein Modell, eine Ansicht oder eine andere fokussierte Darstellung für ein tatsächliches Objekt.

Ausblenden von Informationen:

„Seine Schnittstelle oder Definition wurde so gewählt, dass sie so wenig wie möglich über ihr Innenleben preisgibt.“ — [Parnas, 1972b]

„Abstraktion kann […] als Technik zur Identifizierung verwendet werden, welche Informationen verborgen werden sollten.“

„Verwirrung kann auftreten, wenn Menschen nicht zwischen dem Verbergen von Informationen und einer Technik (z. B. Abstraktion) unterscheiden können, mit deren Hilfe ermittelt werden soll, welche Informationen verborgen werden sollen.“

Verkapselung:

„Es […] bezieht sich auf den Bau einer Kapsel, im Fall einer konzeptionellen Barriere, um eine Ansammlung von Dingen.“ — [Wirfs-Brock et al., 1990]

„Als Prozess bedeutet Einkapselung den Vorgang des Einschließens eines oder mehrerer Elemente in einen […] Behälter.“Kapselung als Einheit bezieht sich auf ein Paket oder eine Umhüllung, die einen oder mehrere Artikel enthält (enthält, umschließt).

"Wenn die Kapselung" das Gleiche war wie die Versteckung von Informationen ", könnte man das Argument machen, dass" alles, was verkapselt wurde, ebenfalls versteckt war ". Dies ist offensichtlich nicht wahr. "

Abschluss:

„Abstraktion, Informationsversteckung und Kapselung sind sehr unterschiedliche, aber eng miteinander verbundene Konzepte.Man könnte argumentieren, dass Abstraktion eine Technik ist, die uns dabei hilft, herauszufinden, welche spezifischen Informationen sichtbar und welche verborgen sein sollten.Kapselung ist dann die Technik, die Informationen so zu verpacken, dass verborgen wird, was verborgen werden sollte, und sichtbar gemacht wird, was sichtbar sein soll.“

Abstraction versteckt die Implementierungsdetails, indem es eine Ebene über der Grundfunktionalität bereitstellt.

Information Hiding verbirgt die Daten, die von dieser Implementierung betroffen sind.Gebrauch von private Und public fällt darunter.Beispielsweise das Ausblenden der Variablen der Klassen.

Encapsulation fasst lediglich alle ähnlichen Daten und Funktionen in einer Gruppe zusammen, z Class im Programmieren; Packet im Networking.

Durch den Einsatz von Klassen implementieren wir alle drei Konzepte – Abstraction, Information Hiding Und Encapsulation

Bitte verkomplizieren Sie einfache Konzepte nicht.

Verkapselung :Das Zusammenfassen von Daten und Methoden in einer einzigen Einheit ist Kapselung (z. B.Klasse)

Abstraktion :Dabei handelt es sich um eine Darstellung nur des Wesentlichen, ohne Hintergrunddetails einzubeziehen.(z.B.Schnittstelle)

FÜR BEISPIELE UND WEITERE INFORMATIONEN GOTO:

http://thecodekey.com/C_VB_Codes/Encapsulation.aspx

http://thecodekey.com/C_VB_Codes/Abstraction.aspx

Genehmigte Definitionen Hier

P.S.:Ich erinnere mich auch an die Definition aus einem Buch namens C++ von Sumita Arora, das wir in der 11. Klasse gelesen haben ;)

Die im Oxford English Dictionary (OED) angegebene Bedeutung von Abstraktion kommt der hier beabsichtigten Bedeutung am nächsten und ist „Der Akt der Trennung im Denken“.Eine bessere Definition könnte lauten: „Darstellung der wesentlichen Merkmale von etwas, ohne Hintergrundinformationen oder unwesentliche Details einzubeziehen.“

Das Ausblenden von Informationen basiert auf dem Prinzip, dass Benutzer einer Softwarekomponente (z. B. einer Klasse) nur die wesentlichen Details zur Initialisierung und zum Zugriff auf die Komponente kennen müssen und nicht die Details der Implementierung kennen müssen.

Bearbeiten:Mir scheint, dass Abstraktion das ist Verfahren zu entscheiden, welche Teile der Implementierung das sein sollen versteckt.

Es handelt sich also nicht um Abstraktion versus Informationsversteckung.Es handelt sich um Informationen, die die VIA-Abstraktion verbergen.

Abstraktion

Abstraktion ist ein Akt der Darstellung wesentlicher Details, ohne die Hintergrunddetails einzubeziehen.Eine abstrakte Klasse verfügt nur über Methodensignaturen und die implementierende Klasse kann über eine eigene Implementierung verfügen. Auf diese Weise werden die komplexen Details vor dem Benutzer verborgen.Die Abstraktion konzentriert sich auf die Außenansicht.Mit anderen Worten: Abstraktion ist die Trennung von Schnittstellen von der eigentlichen Implementierung.

Verkapselung

Bei der Kapselung wird das Binden der Datenelemente und Methoden in einer einzigen Einheit erläutert.Das Verbergen von Informationen ist der Hauptzweck der Kapselung.Die Kapselung wird durch die Verwendung von Zugriffsspezifizierern wie privat, öffentlich und geschützt erreicht.Klassenmitgliedsvariablen werden privat gemacht, sodass sie für die Außenwelt nicht direkt zugänglich sind.Die Kapselung konzentriert sich auf die innere Sicht.Mit anderen Worten: Kapselung ist eine Technik, mit der die Informationen in einem Objekt vor dem anderen Objekt geschützt werden.

Abstraktion bedeutet, wie Sie es ausdrücken, Details der Implementierung zu verbergen.

Sie abstrahieren etwas so weit, dass Sie nur noch etwas sehr Einfaches tun müssen, um eine Aktion auszuführen.

Beim Ausblenden von Informationen werden Implementierungsdetails ausgeblendet.Programmieren ist schwierig.Man kann mit vielen Dingen klarkommen und umgehen.Es kann Variablen geben, die Sie genau im Auge behalten möchten/müssen.Durch das Ausblenden von Informationen wird sichergestellt, dass niemand versehentlich etwas kaputt macht, indem er eine Variable oder Methode verwendet, die Sie öffentlich zugänglich gemacht haben.

Diese beiden Konzepte sind in der objektorientierten Programmierung sehr eng miteinander verknüpft.

Abstraktion - Es ist der Prozess der Ermittlung der wesentlichen Eigenschaften eines Objekts, ohne die irrelevanten und mühsamen Details einzubeziehen.

Verkapselung - Es ist der Prozess, Daten und Funktionen, die diese Daten manipulieren, in einer einzigen Einheit zusammenzufassen.

Abstraktion und Kapselung sind verwandte, aber komplementäre Konzepte.

  1. Abstraktion ist der Prozess.Kapselung ist der Mechanismus, durch den Abstraktion implementiert wird.

  2. Die Abstraktion konzentriert sich auf das beobachtbare Verhalten eines Objekts.Die Kapselung konzentriert sich auf die Implementierung, die zu diesem Verhalten führt.

Informationen verbergen – Dabei handelt es sich um den Prozess, bei dem die Implementierungsdetails eines Objekts ausgeblendet werden.Es ist ein Ergebnis der Kapselung.

Verkapselung:Das Zusammenbinden der Datenelemente und Elementfunktionen wird als Kapselung bezeichnet.Die Kapselung erfolgt durch den Unterricht.Abstraktion:Das Ausblenden der Implementierungsdetails vor der Verwendung oder aus der Ansicht wird als Abstraktion bezeichnet.ex:int x;Wir wissen nicht, wie int intern funktionieren wird.aber wir wissen, dass int funktionieren wird.das ist Abstraktion.

Abstraktion: Abstraktion ist das Konzept/die Technik, mit der ermittelt wird, wie die Außenansicht eines Objekts aussehen soll.Nur die benötigte Schnittstelle zur Verfügung stellen.

Ausblenden von Informationen: Es ist eine Ergänzung zur Abstraktion, da durch das Verbergen von Informationen Abstraktion erreicht wird.Alles andere als die Außenansicht verbergen.

Kapselung: Ist die Bindung von Daten und zugehörigen Funktionen zu einer Einheit.Es erleichtert die Abstraktion und das Verbergen von Informationen.Ermöglicht die Anwendung von Funktionen wie Mitgliederzugriff auf die Einheit, um Abstraktion und Informationsverbergung zu erreichen

Siehe Joels Beitrag zum Gesetz der undichten Abstraktionen

JoelOnsoftware

Grundsätzlich gibt Ihnen das Abstrahieren die Freiheit, über übergeordnete Konzepte nachzudenken.Eine Analogie außerhalb der Programmierung besteht darin, dass die meisten von uns nicht wissen, woher unsere Lebensmittel kommen oder wie sie hergestellt werden, aber die Tatsache, dass wir uns (normalerweise) keine Sorgen darüber machen müssen, gibt uns die Freiheit, andere Dinge zu tun, z Programmierung.

Was das Verstecken von Informationen angeht, stimme ich dem Jamting zu.

Durch Abstraktion können Sie einen komplexen Prozess als einfachen Prozess behandeln.Beispielsweise behandelt die Standardabstraktion „Datei“ Dateien als zusammenhängendes Array von Bytes.Der Benutzer/Entwickler muss nicht einmal über Cluster- und Fragmentierungsprobleme nachdenken.(Abstraktionen erscheinen normalerweise als Klassen oder Unterprogramme.)

Beim Verbergen von Informationen geht es darum, Ihre Abstraktionen vor böswilligen/inkompetenten Benutzern zu schützen.Durch die Beschränkung der Kontrolle über bestimmte Zustände (z. B. Festplattenzuweisungen) auf den ursprünglichen Entwickler werden große Mengen an Fehlerbehandlung überflüssig.Wenn außer dem Dateisystemtreiber niemand anderes auf die Festplatte schreiben kann, weiß der Dateisystemtreiber genau, was wo auf die Festplatte geschrieben wurde.(Die übliche Manifestation dieses Konzepts ist private Und protected Schlüsselwörter in OO-Sprachen.)

Um etwas zu abstrahieren, müssen wir die Details verbergen, oder um die Details von etwas zu verbergen, müssen wir es abstrahieren.Beides kann jedoch durch Kapselung erreicht werden.

Das Verbergen von Informationen ist also ein Ziel, die Abstraktion ein Prozess und die Kapselung eine Technik.

Abstraktion bedeutet einfach die Technik, bei der nur wesentliche Details der Software für den Benutzer sichtbar gemacht werden, um dem Benutzer die Verwendung oder Bedienung der Software zu erleichtern, sodass Implementierungsdetails dieser Software nicht angezeigt (unsichtbar gemacht) werden.Verkapselung ist die Technik, bei der ein Paket ein oder mehrere Elemente enthält und daher einige Informationen (insbesondere Programmdetails) für den Benutzer sichtbar und andere nicht sichtbar werden, sodass die Kapselung durch Ausblenden von Informationen erreicht wird.In Summe. Abstraktion steht für beobachtbares Verhalten (extern) und Kapselung für Unsichtbarkeit (intern), aber diese beiden ergänzen sich wirklich.

Ich füge einfach weitere Details hinzu InformationenVerstecken, gefunden Dieser Link ist eine wirklich gute Quelle mit Beispielen

InformationenVerstecken ist die Idee, dass eine Entwurfsentscheidung vor dem Rest des Systems verborgen bleiben sollte, um eine unbeabsichtigte Kopplung zu verhindern.InformationHiding ist ein Gestaltungsprinzip. InformationenVerstecken Sollte die Art und Weise, wie Sie informieren einkapseln Dinge, aber das muss natürlich nicht sein.

Verkapselung ist eine Programmiersprachenfunktion.

Auch ich war sehr verwirrt über die beiden Konzepte Abstraktion und Kapselung.Aber als ich das sah Abstraktionsartikel Auf myjavatrainer.com wurde mir klar, dass Abstraktion und Kapselung Äpfel und Orangen sind, man kann sie nicht wirklich vergleichen, weil beide erforderlich sind.

Durch die Kapselung wird das Objekt erstellt, und durch die Abstraktion wird das Objekt in der Außenwelt betrachtet.

Nachdem ich alle oben genannten Antworten einzeln gelesen habe, kann ich es nicht lassen, das zu posten

Abstraktion beinhaltet die Möglichkeit, Objekte zu definieren, die abstrakte „Akteure“ darstellen, die Arbeit ausführen, über ihren Zustand berichten und diesen ändern und mit anderen Objekten im System „kommunizieren“ können.

Die Kapselung ist von oben jedoch ganz klar zu erkennen ->

Der Begriff „Kapselung“ bezieht sich auf das Verbergen von Zustandsdetails, aber die Erweiterung des Datentypkonzepts aus früheren Programmiersprachen, um das Verhalten am stärksten mit den Daten zu verknüpfen, und die Standardisierung der Art und Weise, wie verschiedene Datentypen interagieren, ist der Beginn der Abstraktion.

Referenz Wiki

Verkapselung: Bindungsdaten und die Methoden, die darauf reagieren.Dies ermöglicht das Ausblenden von Daten vor allen anderen Methoden in anderen Klassen.Beispiel: MyList Klasse, die ein Element hinzufügen, ein Element entfernen und alle Elemente mit den Methoden entfernen können add, remove, Und removeAll Handeln Sie auf die Liste (ein privates Array), auf die von außen nicht direkt zugegriffen werden kann.

Abstraktion: verbirgt das nicht relevante Verhalten und die Daten.Wie die Elemente tatsächlich gespeichert, hinzugefügt oder gelöscht werden, ist verborgen (abstrahiert).Meine Daten können in einfachen Arrays, ArrayList, LinkedList usw. gespeichert sein.Auch die Art und Weise, wie die Methoden implementiert werden, bleibt nach außen verborgen.

Kapselung – Erzwingen des Zugriffs auf die internen Daten auf kontrollierte Weise oder Verhindern des direkten Zugriffs auf Mitglieder.

Abstraktion – Das Verbergen der Implementierungsdetails bestimmter Methoden wird als Abstraktion bezeichnet

Lassen Sie uns anhand eines Beispiels verstehen:-

class Rectangle
{
private int length;
private int breadth;// see the word private that means they cant be accesed from 
outside world.
 //now to make them accessed indirectly define getters and setters methods
void setLength(int length)
{  
// we are adding this condition to prevent users to make any irrelevent changes 
  that is why we have made length private so that they should be set according to 
   certain restrictions
if(length!=0)
{
 this.length=length
 }
void getLength()
{
 return length;
 }
 // same do for breadth
}

Definieren Sie nun eine Methode, auf die nur zugegriffen werden kann, und der Benutzer weiß nicht, welcher Körper der Methode ist und wie es funktioniert, lassen Sie uns das obige Beispiel berücksichtigen. Wir können einen Methodenbereich definieren, der den Bereich des Rechtecks ​​berechnet.

 public int area()
 {
  return length*breadth;
 }

Wenn ein Benutzer nun die obige Methode verwendet, erhält er nur die Fläche und nicht die Art und Weise, wie sie berechnet wird.Wir können ein Beispiel für die println()-Methode betrachten, von der wir nur wissen, dass sie zum Drucken verwendet wird, aber nicht wissen, wie sie die Daten druckt.Ich habe einen ausführlichen Blog geschrieben. Weitere Informationen finden Sie unter dem folgenden LinkAbstraktion vs. Kapselung

Es ist erwähnenswert, dass es für diese Begriffe standardisierte IEEE-Definitionen gibt, nach denen gesucht werden kann https://pascal.computer.org/.

Abstraktion

  1. Sicht auf ein Objekt, die sich auf die für einen bestimmten Zweck relevanten Informationen konzentriert und den Rest der Informationen ignoriert
  2. Prozess der Formulierung einer Ansicht
  3. Prozess der Unterdrückung irrelevanter Details, um ein vereinfachtes Modell zu erstellen, oder das Ergebnis dieses Prozesses

Informationen verbergen

  1. Softwareentwicklungstechnik, bei der die Schnittstellen jedes Moduls so wenig wie möglich über das Innenleben des Moduls preisgeben und andere Module daran gehindert werden, Informationen über das Modul zu verwenden, die nicht in der Schnittstellenspezifikation des Moduls enthalten sind
  2. Aufnahme einer Entwurfs- oder Implementierungsentscheidung in einem einzelnen Modul, sodass die Entscheidung vor anderen Modulen verborgen bleibt

Verkapselung

  1. Softwareentwicklungstechnik, die darin besteht, eine Systemfunktion oder eine Reihe von Daten und Operationen auf diesen Daten innerhalb eines Moduls zu isolieren und genaue Spezifikationen für das Modul bereitzustellen
  2. Konzept, dass der Zugang zu den Namen, Bedeutungen und Werten der Verantwortlichkeiten einer Klasse völlig getrennt vom Zugang zu ihrer Verwirklichung ist
  3. Idee, dass ein Modul ein Äußeres hat, das sich von seinem Inneren unterscheidet, dass es eine externe Schnittstelle und eine interne Implementierung hat
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top