Die von Alan Kay geprägte objektorientierte Programmierung, auch als OOP- oder OO-Programmierung bekannt, ist ein Programmiersprachenparadigma. In einem objektorientierten Programm kann der Code als wiederverwendbare Komponenten strukturiert werden, von denen einige Eigenschaften oder Verhaltensweisen teilen können.
Die objektorientierte Programmierung kann die Fähigkeit des Entwicklers verbessern, schnell Prototypen für Software zu erstellen, vorhandene Funktionen zu erweitern, den Code umzugestalten und ihn während der Entwicklung zu warten.
Objektorientierte Programmierkonzepte
Beachten Sie beim Programmieren in einer objektorientierten Programmiersprache die folgenden vier Schlüsselkonzepte.
-
Kapselung – Die Gruppierung zusammengehöriger Funktionen und Daten (Variablen) in einem Objekt, um die Komplexität zu reduzieren und die Wiederverwendung von Teilen des Codes zu ermöglichen.
-
Abstraktion – Zeigen Sie nur das Wesentliche, um die Abstraktion der Veränderung zu reduzieren.
-
Vererbung – Eliminieren Sie redundanten Code, indem Sie Funktionen und Daten von anderen Klassen erben.
-
Polymorphismus – Ändern Sie die Funktionsweise eines Objekts in Abhängigkeit von den Daten oder der Klasse.
Was ist ein OOPL?
Eine OOPL (objektorientierte Programmiersprache) ist eine Programmiersprache, die auf dem oben erläuterten objektorientierten Programmiermodell basiert. Beispiele für objektorientierte Programmiersprachen sind C++, C#, Java, Python, Simula und Smalltalk.
Allgemeines OOP-Beispiel
Nehmen wir an, Sie schreiben ein Videospiel, in dem die Spieler Fahrzeuge steuern und Rennen fahren. Wenn Sie eine objektorientierte Programmiersprache verwenden, können Sie eine Klasse von Objekten mit dem Namen „Fahrzeug“ definieren. Diese Klasse kann Definitionen der Eigenschaften und Verhaltensweisen enthalten, die allen Fahrzeugen gemeinsam sind. Beispielsweise beschleunigen und verzögern alle Fahrzeuge und verbrauchen Kraftstoff. Innerhalb dieser Klassendefinition können Sie Methoden (ähnlich wie Funktionen) namens „accelerate“ und „decelerate“ sowie eine Eigenschaft (einen Variablentyp) namens „fuel“ definieren, deren Wert Sie abrufen oder festlegen können.
Anschließend könnten Sie Unterklassen definieren, auch abgeleitete Klassen oder untergeordnete Klassen genannt, die Methoden und Eigenschaften von der Klasse „Fahrzeug“ erben. Beispielsweise könnten Sie eine Unterklasse mit dem Namen “Motorrad” mit zwei Rädern und eine Unterklasse mit dem Namen “Auto” mit vier Rädern definieren. Ihre gemeinsamen Eigenschaften (Beschleunigung, Verzögerung und Kraftstoffverbrauch) sind bereits in “Fahrzeug” definiert, sodass Sie diese nicht erneut schreiben müssen.
Anschließend könnten Sie diese Unterklassen instanziieren, um einzelne spielbare Fahrzeuge zu definieren. Jede Instanz der Unterklasse würde Methoden und Eigenschaften von allen ihren Elternklassen erben und eigene Eigenschaften und Methoden haben. Zu seinen einzigartigen Eigenschaften gehören beispielsweise die Lackfarbe (“rot”, “blau” usw.) und der Preis (wenn der Spieler es mit In-Game-Währung kaufen möchte).
Wenn Sie später den für ein Motorrad spezifischen Code ändern möchten, müssen Sie die übergeordnete “Fahrzeug”-Klasse nicht ändern. Der „Fahrzeug“-Code wurde bereits getestet und funktioniert gut, sodass das Modifizieren Ihres Programms weniger Arbeit erfordert. Da außerdem weniger Codezeilen geändert werden, verringert sich die Wahrscheinlichkeit, dass irgendwo im neuen Code ein Fehler eingeführt wird. Wenn ein Fehler auftritt, brauchen Sie sich nicht zu fragen, ob er sich im Klassencode „Fahrzeug“ befindet, da diese Klasse nicht geändert wurde. Entwicklung und Wartung der Software können daher effizienter sein und Zeit und Aufwand sparen.
Klasse, Computerakronyme, Objekt, Objektmodul, Objektorientiert, Polymorphismus, Programmierbegriffe