Können Sie mir sagen, was der Unterschied zwischen Abstraktion und Informationen ist, die sich in der Softwareentwicklung verstecken ?
Ich bin verwirrt. Die Abstraktion verbirgt die Detailimplementierung und das Ausblenden von Informationen abstrahiert ganze Details von etwas.
Update: Ich habe eine gute Antwort auf diese drei Konzepte gefunden. In der separaten Antwort unten finden Sie einige Zitate, die von dort stammen .
Antworten:
Gehe zur Quelle! Grady Booch sagt (in Objektorientierte Analyse und Design, Seite 49, zweite Ausgabe):
Mit anderen Worten: Abstraktion = das Objekt von außen; Kapselung (erreicht durch Verstecken von Informationen) = das Objekt intern,
Beispiel: In .NET Framework stellt die
System.Text.StringBuilder
Klasse eine Abstraktion über einen Zeichenfolgenpuffer bereit. Mit dieser Pufferabstraktion können Sie mit dem Puffer arbeiten, ohne Rücksicht auf seine Implementierung. Auf diese Weise können Sie Zeichenfolgen an den Puffer anhängen, ohne zu berücksichtigen, wie derStringBuilder
interne Benutzer Dinge wie den Zeiger auf den Puffer und die Speicherverwaltung verfolgt, wenn der Puffer voll ist (was bei der Kapselung über das Ausblenden von Informationen der Fall ist).rp
quelle
Das OP aktualisierte seine Frage mit mehreren Zitaten, die er gefunden hatte, und zwar in einem Artikel von Edward V. Berard mit dem Titel "Abstraktion, Verkapselung und Verstecken von Informationen" . Ich veröffentliche eine leicht erweiterte und neu formatierte Version des OP-Updates erneut, da dies eine eigenständige Antwort sein sollte.
(Alle Zitate stammen aus dem oben genannten Artikel.)
Abstraktion:
Verstecken von Informationen:
Verkapselung:
Fazit:
quelle
Information Hiding
(oder das Ausblenden der Implementierung), während ein Generikumclass
Kapselung und Abstraktion durchprivate
Zugriff erreichtAbstraction
versteckt die Implementierungsdetails, indem eine Ebene über der Grundfunktionalität bereitgestellt wird.Information Hiding
versteckt die Daten, die von dieser Implementierung betroffen sind. Verwendung vonprivate
undpublic
fällt darunter. Zum Beispiel das Ausblenden der Variablen der Klassen.Encapsulation
fügt nur alle ähnlichen Daten und Funktionen in eine Gruppe ein, z. B.Class
beim Programmieren;Packet
in der Vernetzung.Durch die Verwendung von Klassen implementieren wir alle drei Konzepte -
Abstraction
,Information Hiding
undEncapsulation
quelle
Bitte komplizieren Sie keine einfachen Konzepte.
Verkapselung : Das Zusammenfassen von Daten und Methoden in einer einzigen Einheit ist Kapselung (z. B. Klasse).
Abstraktion : Es handelt sich um eine Darstellung nur der wesentlichen Dinge ohne Hintergrunddetails. (zB Schnittstelle)
ZB BEISPIELE UND WEITERE INFOS GOTO:
http://thecodekey.com/C_VB_Codes/Encapsulation.aspx
http://thecodekey.com/C_VB_Codes/Abstraction.aspx
Genehmigte Definitionen hier
PS: Ich erinnere mich auch an die Definition aus einem Buch namens C ++ von Sumita Arora, das wir in der 11. Klasse gelesen haben;)
quelle
Die Bedeutung der Abstraktion, die das Oxford English Dictionary (OED) der hier beabsichtigten Bedeutung am nächsten kommt, ist "Der Akt der Trennung im Denken". Eine bessere Definition könnte sein: "Darstellung der wesentlichen Merkmale von etwas ohne Hintergrund oder unwesentliche Details."
Das Ausblenden von Informationen ist das Prinzip, dass Benutzer einer Softwarekomponente (z. B. einer Klasse) nur die wesentlichen Details zum Initialisieren und Zugreifen auf die Komponente kennen müssen und nicht die Details der Implementierung kennen müssen.
Bearbeiten : Ich denke, dass Abstraktion der Prozess der Entscheidung ist, welche Teile der Implementierung versteckt werden sollen .
Es ist also keine Abstraktion VERSUS Informationen versteckt. Es sind Informationen, die die VIA-Abstraktion verbergen.
quelle
Abstraktion
Abstraktion ist ein Akt der Darstellung von wesentlichen Details ohne Berücksichtigung der Hintergrunddetails. Eine abstrakte Klasse hat nur Methodensignaturen und die implementierende Klasse kann eine eigene Implementierung haben. 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 tatsächlichen Implementierung.
Verkapselung
Die Kapselung erklärt das Binden der Datenelemente und Methoden in eine Einheit. Das Verstecken 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 nicht direkt für die Außenwelt zugänglich sind. Die Kapselung konzentriert sich auf die innere Ansicht. Mit anderen Worten, Kapselung ist eine Technik, mit der die Informationen in einem Objekt vor dem anderen Objekt geschützt werden.
quelle
Abstraktion verbirgt Details der Implementierung, wie Sie es ausdrücken.
Sie abstrahieren etwas so hoch, dass Sie nur etwas sehr Einfaches tun müssen, um eine Aktion auszuführen.
Durch das Ausblenden von Informationen werden Implementierungsdetails ausgeblendet. Die Programmierung ist schwierig. Sie können eine Menge Dinge erledigen und handhaben. Es kann Variablen geben, die Sie genau verfolgen möchten / müssen. Durch das Ausblenden von Informationen wird sichergestellt, dass niemand versehentlich etwas zerstört, indem er eine Variable oder Methode verwendet, die Sie öffentlich verfügbar gemacht haben.
Diese beiden Konzepte sind in der objektorientierten Programmierung sehr eng miteinander verbunden.
quelle
Abstraktion - Hierbei handelt es sich um den Prozess der Identifizierung der wesentlichen Merkmale eines Objekts, ohne die irrelevanten und langwierigen Details einzubeziehen.
Verkapselung - Hierbei werden Daten und Funktionen, die diese Daten bearbeiten, in einer einzigen Einheit zusammengefasst.
Abstraktion und Verkapselung sind verwandte, aber komplementäre Konzepte.
Abstraktion ist der Prozess. Die Kapselung ist der Mechanismus, mit dem die Abstraktion implementiert wird.
Die Abstraktion konzentriert sich auf das beobachtbare Verhalten eines Objekts. Die Kapselung konzentriert sich auf die Implementierung, die zu diesem Verhalten führt.
Ausblenden von Informationen - Hierbei werden die Implementierungsdetails eines Objekts ausgeblendet. Es ist ein Ergebnis der Verkapselung.
quelle
Kapselung: Das Zusammenbinden der Datenelemente und Elementfunktionen wird als Kapselung bezeichnet. Die Kapselung erfolgt durch Klasse. Abstraktion: Das Ausblenden der Implementierungsdetails aus der Verwendung oder aus der Ansicht wird als Abstraktion bezeichnet. Beispiel: int x; Wir wissen nicht, wie int intern funktionieren wird. aber wir wissen, dass int funktionieren wird. das ist Abstraktion.
quelle
Abstraktion: Abstraktion ist das Konzept / die Technik, mit der die Außenansicht eines Objekts ermittelt wird. Nur die erforderliche Schnittstelle verfügbar machen.
Verstecken von Informationen: Es ist eine Ergänzung zur Abstraktion, da durch das Verstecken von Informationen eine Abstraktion erreicht wird. Alles andere als die Außenansicht verstecken.
Kapselung: Bindet Daten und verwandte Funktionen in eine Einheit. Es erleichtert die Abstraktion und das Verstecken von Informationen. Ermöglichen, dass Funktionen wie der Zugriff von Mitgliedern auf das Gerät angewendet werden, um das Ausblenden von Abstraktion und Informationen zu erreichen
quelle
Siehe Joels Beitrag zum Gesetz der undichten Abstraktionen
JoelOnsoftware
Grundsätzlich gibt Ihnen das Abstrahieren die Freiheit, über Konzepte höherer Ebenen nachzudenken. Eine nicht programmierende Analogie ist, dass die meisten von uns nicht wissen, woher unser Essen kommt oder wie es hergestellt wird, aber die Tatsache, dass wir uns (normalerweise) keine Sorgen machen müssen, macht uns frei, andere Dinge zu tun, wie z Programmierung.
Was das Verstecken von Informationen angeht, stimme ich dem Jaming zu.
quelle
Kurz gesagt
Kapselung : - Verstecken von Informationen
Abstraktion : - Implementierung versteckt
Abstraction
Sie können sich darauf konzentrieren,what the object does
während Kapselung bedeutethow an object works
quelle
Mit 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. (Die Abstraktion wird normalerweise als Klassen oder Unterprogramme angezeigt.)
Beim Ausblenden von Informationen geht es darum, Ihre Abstraktionen vor böswilligen / inkompetenten Benutzern zu schützen. Durch die Beschränkung der Kontrolle über einen bestimmten Status (z. B. Festplattenzuweisungen) auf den ursprünglichen Entwickler wird eine enorme Fehlerbehandlung überflüssig. Wenn außer dem Dateisystemtreiber niemand auf die Festplatte schreiben kann, weiß der Dateisystemtreiber genau, was und wo auf die Festplatte geschrieben wurde. (Die übliche Manifestation dieses Konzepts ist
private
undprotected
Schlüsselwörter in OO-Sprachen.)quelle
Um etwas zu abstrahieren, müssen wir das Detail verbergen oder um das Detail von etwas zu verbergen, das wir abstrahieren müssen. Beide können jedoch durch Einkapselung erreicht werden.
Das Verstecken von Informationen ist also ein Ziel, die Abstraktion ein Prozess und die Kapselung eine Technik.
quelle
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 den Betrieb mit Software zu erleichtern. Daher werden Implementierungsdetails dieser Software nicht angezeigt (werden unsichtbar gemacht). Kapselung ist die Technik, bei der ein Paket ein oder mehrere Elemente enthält und daher einige Informationen (insbesondere Programmdetails) sichtbar und andere für den Benutzer nicht sichtbar wurden, sodass die Kapselung durch Ausblenden von Informationen erreicht wird. Zusammenfassend. Abstraktion dient dem beobachtbaren Verhalten (extern) und Kapselung der Unsichtbarkeit (intern), aber diese beiden ergänzen sich wirklich.
quelle
Nur weitere Details zu InformationHiding hinzufügen , gefunden Dieser Link ist eine wirklich gute Quelle mit Beispielen
quelle
Sowohl Abstraction als auch Encapsulation sind zwei der vier grundlegenden OOP-Konzepte, mit denen Sie reale Dinge in Objekte modellieren können, um sie in Ihrem Programm und Code zu implementieren. Viele Anfänger werden zwischen Abstraktion und Verkapselung verwechselt, weil sie beide sehr ähnlich aussehen. Wenn Sie jemanden fragen, was Abstraktion ist, wird er sagen, dass es sich um ein OOP-Konzept handelt, das sich auf relevante Informationen konzentriert, indem unnötige Details ausgeblendet werden. Wenn Sie nach der Kapselung fragen, werden viele sagen, dass es sich um ein anderes OOP-Konzept handelt, das Daten vor der Außenwelt verbirgt. Die Definitionen sind nicht falsch, da sowohl Abstraktion als auch Kapselung etwas verbergen, aber der Hauptunterschied liegt in der Absicht.
Durch Abstraktion wird die Komplexität ausgeblendet, indem Sie ein abstrakteres Bild erhalten, eine Art 10.000-Fuß-Ansicht, während durch die Kapselung die interne Arbeit ausgeblendet wird, damit Sie sie später ändern können. Mit anderen Worten, Abstraktion verbirgt Details auf Entwurfsebene, während Encapsulation Details auf Implementierungsebene verbirgt.
quelle
Nachdem ich alle oben genannten Antworten einzeln gelesen habe, kann ich mich nicht davon abhalten, diese zu veröffentlichen
Die Kapselung ist jedoch von oben ganz klar ->
Referenz- Wiki
quelle
Auch ich war sehr verwirrt über die beiden Konzepte Abstraktion und Verkapselung. Aber als ich den Abstraktionsartikel sah auf myjavatrainer.com sah, wurde mir klar, dass Abstraktion und Verkapselung Äpfel und Orangen sind. Man kann sie nicht wirklich vergleichen, weil beide erforderlich sind.
Durch Kapselung wird das Objekt erstellt, und durch Abstraktion wird das Objekt in der Außenwelt betrachtet.
quelle
Kapselung: Bindungsdaten und die darauf einwirkenden Methoden. 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 entfernen Sie alle Gegenstände , die Methodenadd
,remove
undremoveAll
Akt auf der Liste (eine private Array) , die nicht direkt von außen zugegriffen werden kann.Abstraktion: versteckt das nicht relevante Verhalten und die Daten. Wie die Elemente tatsächlich gespeichert, hinzugefügt oder gelöscht werden, ist ausgeblendet (abstrahiert). Meine Daten können in einfachen Arrays, ArrayList, LinkedList usw. gespeichert sein. Außerdem ist die Art und Weise, wie die Methoden implementiert werden, von außen verborgen.
quelle
Kapselung - Erzwingen des kontrollierten Zugriffs auf die internen Daten oder Verhindern des direkten Zugriffs auf Mitglieder.
Abstraktion - Das Ausblenden der Implementierungsdetails bestimmter Methoden wird als Abstraktion bezeichnet
Lassen Sie uns anhand eines Beispiels verstehen: -
Definieren Sie jetzt für die Abstraktion eine Methode, auf die nur zugegriffen werden kann, und der Benutzer weiß nicht, was der Hauptteil der Methode ist und wie sie funktioniert. Betrachten wir das obige Beispiel. Wir können einen Methodenbereich definieren, der die Fläche des Rechtecks berechnet.
Wenn ein Benutzer die oben beschriebene 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, und wir wissen nicht, wie sie die Daten druckt. Ich habe einen Blog im Detail geschrieben. Unter dem folgenden Link finden Sie weitere Informationen zur Abstraktion und Kapselung
quelle
Es ist erwähnenswert, dass diese Begriffe standardisierte IEEE-Definitionen haben, die unter https://pascal.computer.org/ durchsucht werden können. .
Abstraktion
Informationen verstecken
Verkapselung
quelle