Ich versuche die Definition von 'Abstraktion' in OOP zu verstehen.
Ich bin auf einige Hauptdefinitionen gestoßen. Sind sie alle gültig? Ist einer von ihnen falsch? Ich bin verwirrt. (Ich habe die Definition mit meinen eigenen Worten neu geschrieben).
Definition 1:
Abstraktion ist das Konzept, ein Objekt aus der realen Welt zu nehmen und es in Programmierbegriffe umzuwandeln. Wie die Schaffung einer Human
Klasse und es geben int health
, int age
, String name
usw. Eigenschaften und eat()
usw. Methoden.
Definition 2:
Eine allgemeinere Definition. Abstraktion ist ein Konzept, das überall in einem Softwaresystem stattfindet, wo es darum geht , Dinge allgemeiner / einfacher / abstrakter zu machen . Einige Beispiele:
Eine Vererbungshierarchie, in der die höheren Klassen einfacher oder allgemeiner sind und eine allgemeinere und abstraktere Implementierung definieren. Während die unteren Klassen in der Hierarchie konkreter sind und detailliertere Implementierungen definieren.
Verwenden der Kapselung, um die Details der Implementierung einer Klasse vor anderen Klassen zu verbergen, wodurch die Klasse für die äußere Softwarewelt "abstrakter" (einfacher) wird.
Definition 3
Eine andere allgemeine Definition: Abstraktion ist das Konzept, den Fokus von den Details und der konkreten Implementierung von Dingen auf die Arten von Dingen (dh Klassen), die verfügbaren Operationen (dh Methoden) usw. zu verlagern, wodurch die Programmierung einfacher und allgemeiner wird. und abstrakter. (Dies kann überall und in jedem Kontext im Softwaresystem erfolgen). Dies geschieht zum Beispiel beim Einkapseln, weil das Einkapseln bedeutet, die Details der Implementierung zu verbergen und nur die Arten von Dingen und ihre allgemeineren und abstrakteren Definitionen anzuzeigen. Ein Beispiel wäre die Verwendung eines List
Objekts in Java. Dieses Objekt verwendet tatsächlich die Implementierungsdetails eines ArrayList
oder eines LinkedList
, diese Informationen werden jedoch unter Verwendung des allgemeineren Namens abstrahiert List
.
Ist eine dieser Definitionen korrekt? (Ich beziehe mich auf die gängigste und anerkannteste Definition).