Grundlagen: Konzept der objektorientierten Programmierung

Was die objektorientierte Programmierung [OOP] tut, verrät ihr Name: man jongliert mit Objekten. Objekte sind dabei sowas wie Kapseln, in denen man Informationen (Eigenschaften) und die Art sie zu verarbeiten (Methoden) hinterlegt.

Bereits bei so etwas einfachem wie einem Gästebuch kannst du OOP verwenden. Du hast zwar nur ein Objekt: den Gästebucheintrag, dieser hat aber bereits Eigenschaften wie Datum, Uhrzeit, Kommentar usw. und Methoden wie erstellen(), löschen(), darstellen() usw.

OOP wird dann noch richtig interessant, wenn man mehrere Objekte hat, zum Beispiel Gästebucheinträge und Benutzer und diese miteinander interagieren lässt.

Objekte

Ein Objekt, so wie es die OOP versteht, hat grundsätzlich 2 Dinge:

  1. Eine Daten-Struktur
  2. Eine Prozess-Struktur

Die Daten-Struktur enthält die Werte, die das Objekt zu dem machen was es ist - seine Eigenschaften. Man nennt sie „Attribute“.

Beispielsweise hat ein Objekt namens „Mitarbeiter“ Attribute wie:

  • Nachname
  • Vorname
  • Adresse

Die Prozess-Struktur enthält Prozesse, welche auf die Attribute zugreifen, sie verändern und darstellen können. Diese Prozesse werden Methoden genannt.

Das Mitarbeiter-Objekt von oben könnte zum Beispiel die folgenden Methoden haben:

  • setzeVorname
  • setzteNachname
  • setzeAdresse
  • gibVorname
  • gibNachname
  • gibAdresse

Klassen & Instanzen

Damit ein Objekt zu diesen beiden Strukturen kommt, müssen diese vorher irgendwo definiert sein. Das macht man in sogenannten „Klassen“. Wenn man ein Objekt erzeugt, nimmt man eine Klasse her und stopft alles was darin enthalten ist ins Objekt hinein. Diesen Vorgang nennt man „instanzieren“ und das instanzierte Objekt einer Klasse nennt man eine „Instanz“. Man kann von einer Klasse beliebig viele Instanzen, sprich so viele Objekte wie man will instanzieren, sie werden alle die inder Klasse definierten Attribute und Methoden haben.

Jedes Attribut und jede Methode in einer Klassen sind einzigartig, was ganz einfach heißt, sie können nicht doppelt vorkommen. Das ist an sich logisch, denn wenn ich zwei verschiedene Methoden definiere die „setzeVorname“ heißen, und sie dann aufrufe, wie soll das System wissen, welche der beiden definierten Methoden ich jetzt haben will? Die meisten Programmier- und Skript-Sprachen geben dann eine Fehlermeldung aus, manche überschreiben die vorherige Methode einfach mit der neuen.

Für die ganz Wiffen:
Im Prinzip existieren Objekte gar nicht, sie sind lediglich Instanzen ihrer Klassen. Je nachdem wie eine Klasse definiert ist, kann man davon Instanzen machen. Man hat also immer nur eine Klasse, und so viele Instanzen davon, wie man erzeugt hat. Das „Objekt“ in der OOP ist lediglich das theoretische Modell einer Instanz, das von einer Klasse erzeugt werden kann.

Vererbung
Wenn ich Klassen definiert hab, tritt manchmal der Fall ein, dass ich unter gewissen Umständen andere Methoden oder andere Attribute darin brauche. Da ich eine Klasse nur einmal definieren kann (sonst würden nämlich die vorher abgeleiteten Instanzen mit den späteren nicht mehr kompatibel sein), bleibt mir dann nichts anderes übrig, als sie zu kopieren. Diesen Vorgang nennt man ableiten.

Im Grunde passiert dabei nichts anderes, als das Klasse A ihre ganzen Attribute und Methoden der Klasse B vererbt. Da ich zu diesem Zeitpunkt von Klasse B noch keine Instanzen hab, kann ich jetzt ohne Bedenken Methoden und Attribute überschreiben oder hinzufügen. Die Klasse A nennt man bei diesem Prozess dann Mutter-, Super-, oder Basis-Klasse (bzw. parent) und die Klasse B die Tochter (bzw. child).

Einfache & Mehrfache (Multiple) Vererbung
Vererbe ich jetzt meine Mitarbeiter-Klasse, weil ich zum Beispiel je nachdem, in welcher Abteilung ein Angestellter arbeitet andere Methoden brauche (der Baggerfahrer hat zum Beispiel ganz andere Aufgaben als der Logistiker), vererbe ich meine Mitarbeiter-Klasse einfach zweimal und schmeiße die neuen Methoden und Attribute dazu, die ich brauche. Abgesehen davon, dass sie den selben Ursprung haben, stehen die Tochter-Klassen in keiner Beziehung mehr zueinander, sie wurden „einfach“ vererbt.

In manchen Fällen passiert es danach aber, dass sie doch wieder in Beziehung zueinander stehen, zum Beispiel essen die Logistiker und Sekretärinnen im Haus in der Kantine, während die Baggerfahrer auf der Baustelle essen. Logistiker und Sekretärinnen brauchen aber völlig unterschiedliche Methoden und Attribute. Wenn man zwei Methoden vererbt und ihnen später gleiche Attribute und Methoden nimmt oder gibt, spricht man von mehrfacher oder multipler Vererbung.

Nachwort
Je komplexer ein Projekt wird, umso mehr Klassen und vererbte Klassen wird es bekommen. Die Klassen können alle völlig separat voneinander entwickelt werden. Man muss nicht wissen WIE eine Methode einer anderen Klasse funktioniert, nur DAS es sie gibt, mit welchen Parametern sie aufgerufen wird und welches Ergebnis man dadurch erhält.

Das ist der größte Vorteil der OOP, theoretisch können hunderte Personen völlig unabhängig voneinander an ein und dem selben Projekt arbeiten ohne, dass einer ALLES wissen muss. Das ermöglicht einem außergewöhnlich komplexe Anwendungen zu entwickeln, aber vor allem außergewöhnlich GUTE, denn innerhalb der eigenen Klasse wird jeder zum Experten. Man spezialisiert sich immer mehr und holt das Beste aus seinem Gebiet heraus.

Kommentare