Heim  >  Artikel  >  Was sind die drei Elemente der objektorientierten Programmierung?

Was sind die drei Elemente der objektorientierten Programmierung?

烟雨青岚
烟雨青岚Original
2020-07-10 10:28:3817020Durchsuche

Die drei Elemente der objektorientierten Programmierung sind Kapselung, Vererbung und Polymorphismus. Kapselung bedeutet, dass Dinge in Klassen abstrahiert werden, externe Schnittstellen verfügbar gemacht werden und Implementierung und interne Daten ausgeblendet werden. Polymorphismus bedeutet, dass ein übergeordnetes Objekt einem oder mehreren untergeordneten Objekten gleichgesetzt werden darf .

Was sind die drei Elemente der objektorientierten Programmierung?

Die drei Elemente der objektorientierten Programmierung sind Kapselung, Vererbung und Polymorphismus

Die fünf Grundelemente von Prinzipien der objektorientierten Programmierung: Einzelverantwortungsprinzip, offenes und geschlossenes Prinzip, Liskov-Substitutionsprinzip, Abhängigkeitsinversionsprinzip, Schnittstellenabstraktionsprinzip

Kapselung

Bei der Kapselung werden Dinge abstrahiert in Klassen und externe Schnittstellen Expose, verbirgt Implementierung und interne Daten.

Vererbung

Ein Hauptmerkmal objektorientierter Programmiersprachen (OOP) ist die „Vererbung“. Unter Vererbung versteht man die Möglichkeit, die gesamte Funktionalität einer vorhandenen Klasse zu nutzen und diese zu erweitern, ohne die ursprüngliche Klasse neu schreiben zu müssen.

Neue Klassen, die durch Vererbung erstellt werden, werden „Unterklassen“ oder „abgeleitete Klassen“ genannt.

Die geerbte Klasse wird „Basisklasse“, „Elternklasse“ oder „Superklasse“ genannt.

Der Prozess der Vererbung ist der Prozess vom Allgemeinen zum Besonderen.

Um eine Vererbung zu erreichen, können Sie dies durch „Vererbung“ und „Zusammensetzung“ erreichen.

In einigen OOP-Sprachen kann eine Unterklasse mehrere Basisklassen erben. Im Allgemeinen kann eine Unterklasse jedoch nur eine Basisklasse haben. Um eine Mehrfachvererbung zu erreichen, kann dies durch mehrstufige Vererbung erreicht werden.

Es gibt drei Möglichkeiten, das Konzept der Vererbung umzusetzen: Implementierungsvererbung, Schnittstellenvererbung und visuelle Vererbung.

Implementierungsvererbung bezieht sich auf die Fähigkeit, die Eigenschaften und Methoden einer Basisklasse ohne zusätzliche Codierung zu verwenden.

Schnittstellenvererbung bezieht sich auf die Fähigkeit, nur die Namen von Eigenschaften und Methoden, aber Unterklassen zu verwenden muss Implementierungen bereitstellen ;

Visuelle Vererbung bezieht sich auf die Fähigkeit eines Unterformulars (Klasse), das Erscheinungsbild und den Implementierungscode eines Basisformulars (Klasse) zu verwenden.

Bei der Verwendung von Vererbung ist zu beachten, dass die Beziehung zwischen zwei Klassen eine „gehört zu“-Beziehung sein sollte. Beispiel: „Mitarbeiter“ ist eine Person und „Manager“ ist ebenfalls eine Person, sodass beide Klassen die Klasse „Person“ erben können. Die Klasse „Leg“ kann jedoch nicht die Klasse „Person“ erben, da das Bein keine Person ist.

Abstrakte Klassen definieren nur allgemeine Eigenschaften und Methoden, die von Unterklassen erstellt werden. Verwenden Sie beim Erstellen abstrakter Klassen das Schlüsselwort Interface anstelle von Class.

Das OO-Entwicklungsparadigma lautet ungefähr wie folgt: Aufteilen von Objekten → abstrakte Klassen → Organisieren von Klassen in hierarchischen Strukturen (Vererbung und Synthese) → Verwenden von Klassen und Instanzen zum Entwerfen und Implementieren mehrerer Stufen.

Polymorphismus

Polymorphismus (Polymorphismus) ist eine Technik, die es Ihnen ermöglicht, ein übergeordnetes Objekt nach der Zuweisung, dem übergeordneten Objekt, so festzulegen, dass es einem oder mehreren seiner untergeordneten Objekte gleich ist Das Objekt kann je nach den Eigenschaften des ihm aktuell zugewiesenen untergeordneten Objekts auf unterschiedliche Weise funktionieren. Einfach ausgedrückt ist es ein Satz: Es ist erlaubt, einen Zeiger eines Unterklassentyps einem Zeiger eines übergeordneten Klassentyps zuzuweisen.

Es gibt zwei Möglichkeiten, Polymorphismus zu implementieren: Überschreiben und Überladen.

Überschreiben bezieht sich auf die Praxis, dass Unterklassen virtuelle Funktionen von übergeordneten Klassen neu definieren.

Überladen bedeutet, dass mehrere Funktionen mit demselben Namen existieren dürfen, die Parameterlisten dieser Funktionen jedoch unterschiedlich sind (möglicherweise ist die Anzahl der Parameter unterschiedlich, die Parametertypen sind unterschiedlich oder beide sind unterschiedlich).

Tatsächlich gehört das Konzept der Überladung nicht zur „objektorientierten Programmierung“. Die Implementierung der Überladung ist: Der Compiler ändert die Namen von Funktionen mit demselben Namen basierend auf unterschiedlichen Parameterlisten der Funktionen. und dann werden diese Funktionen mit demselben Namen zu unterschiedlichen Funktionen (zumindest was den Compiler betrifft).

Zum Beispiel gibt es zwei Funktionen mit demselben Namen: function func(p:integer):integer; und function func(p:string):integer;. Dann könnte der vom Compiler geänderte Funktionsname wie folgt lauten: int_func, str_func.

Die Aufrufe dieser beiden Funktionen wurden zwischen den Compilern festgelegt und sind statisch (denken Sie daran: sie sind statisch). Mit anderen Worten, ihre Adressen werden zur Kompilierzeit gebunden (frühe Bindung), daher hat Überladung nichts mit Polymorphismus zu tun! Was wirklich mit Polymorphismus zusammenhängt, ist die „Abdeckung“.

Wenn eine Unterklasse die virtuelle Funktion der übergeordneten Klasse neu definiert, ruft der übergeordnete Klassenzeiger dynamisch (denken Sie daran: er ist dynamisch!) die zur Unterklasse gehörende Funktion entsprechend den verschiedenen ihm zugewiesenen Unterklassenzeigern auf, z Ein Funktionsaufruf kann beim Kompilieren nicht ermittelt werden (die Adresse der virtuellen Funktion der aufgerufenen Unterklasse kann nicht angegeben werden).

Daher wird die Adresse einer solchen Funktion zur Laufzeit gebunden (späte Bindung). Die Schlussfolgerung ist: Überladung ist nur ein Sprachmerkmal und hat nichts mit Polymorphismus oder Objektorientierung zu tun! Um Bruce Eckel zu zitieren: „Seien Sie nicht dumm, wenn es keine späte Bindung ist, ist es nicht polymorph.“ Welche Rolle spielt Polymorphismus? Wir wissen, dass die Kapselung Implementierungsdetails verbergen und den Code modular gestalten kann; die Vererbung kann bestehende Codemodule (Klassen) erweitern.

Ihr Zweck ist die Wiederverwendung von Code. Polymorphismus soll einen weiteren Zweck erreichen: Wiederverwendung von Schnittstellen! Die Funktion des Polymorphismus besteht darin, den korrekten Aufruf sicherzustellen, wenn ein bestimmtes Attribut einer Instanz einer beliebigen Klasse im „Stammbaum“ verwendet wird, wenn die Klasse erbt und ableitet.

Weitere Informationen zu diesem Thema finden Sie auf der PHP-Website für Chinesisch! !

Das obige ist der detaillierte Inhalt vonWas sind die drei Elemente der objektorientierten Programmierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn