Was ist OOP?

Bearbeiten

OOP steht für Objekt Orientierte Programmierung, doch was genau muss man sich darunter vorstellen? Um das einigermaßen zu leicht zu verstehen, gebe ich einmal ein Beispiel aus einer Programmiersprache, die nicht objektorientiert ist:

Will man dabei ein einfaches Programm für die Verwaltung von Adressen schreiben, so legt man zunächst für jeden Bereich, den man speichern möchte, ein Datenfeld an. Das könnte dann etwa folgendermaßen aussehen:

Anzahl%=500
Dim Vorname$(Anzahl)
Dim Nachname$(Anzahl)
Dim Geburtstag$(Anzahl)
Dim Strasse$(Anzahl)
Dim Hausnummer$(Anzahl)
Dim Postleitszahl%(Anzahl)
Dim Stadt$(Anzahl)

Jeder Adresse wird ein Index zugeordnet, der mit jeder neuen Adresse einfach um 1 erhöht wird. So ist der höchste Index auch gleichzeitig die Anzahl der gespeicherten Adressen. Dazu schreibt man dann Unterprogramme, die diese Datenfelder entspechend nutzen:

  • eine Unterprogramm für die Eingabe von Adressen
  • eine Unterprogramm für das Speichern von Adressen
  • eine Unterprogramm für das Laden von Adressen
  • eine Unterprogramm für das Anzeigen von Adressen

Und so weiter, doch je mehr Unterprogramme man hat, umso unübersichtlicher wird das Programm. Wenn man dann schon einige Adressen eingegeben hat, kann es passieren dass eine Person stirbt, oder man aus einem anderen Grund eine Adresse nicht mehr speichern will. Dann hat man irgendwo in der Mitte der Liste einen Index, bei dem keine Adresse mehr gespeichert ist. Das ist noch relativ einfach zu beheben, indem man alle nachfolgenden Adressen um einen Index reduziert. Komplizierter wird es schon, wenn zwei Personen der Liste heiraten. Entweder man behält beide Adressen einzeln gspeichert, wodurch man keine Möglichkeit hat, zu notieren das die beiden verheiratet sind. Oder man speichert beide Personen an einer Adresse und muss dafür bei Vorname und Geburtstag je 2 Daten speichern. Dann jedoch muss man die Unterprogramme für Eingabe und Anzeigen ändern, damit das Programm erkennt, dass dor zwei Personen gespeichert sind. Noch komplizierter wird es, wenn man zu jeder Person auch noch eine email-Adresse, einen Nick in einem Chatraum, oder die Telefon/Handy-Nummer notieren möcht, besonders wenn mache mehrere Handys haben. Man muss dann nämlich alle Datensätze anpassen und alle Unterprogramme umschreiben. Das ist dann fast ebenso viel Aufwand, als wenn man das ganze Programm neu schreibt.

Alle genannten (und auch weitere mögliche) Probleme lassen sich mit objektorientierter Programmierung beheben. Dabei werden einfach zusammengehörige Daten in einer Gruppe zusammen gefasst. In diese Gruppen setzt man Verweise oder Verweislisten auf andere Gruppen um die Gruppen miteinander zu verbinden. Solche Gruppen werden "Objekte" bezeichnet. Jedes Objekt hat bestimmte Eigenschaften und unterprogramme, die die Programmierung mit Objekten erleichtern. Damit man nicht jede verschiedene Art von Objekten selber Programmieren muss, sind einige Objekt-Arten schon vordefiniert und man kann daraus untergeordnete Objekte nach eigenem Bedarf erstellen. Das hört sich momentan noch sehr theoretisch an, wird aber gleich einfacher verständlich mit einem einfachen Beispiel:

Anfang der Objekt-Definition "Person"
    Datenfeld "Vorname"
    Datenfeld "Nachname"
    Datenfeld "Geburtstag"
    Unterprogramm neue "Person" anlegen
    Unterprogramm "Person" löschen
    Unterprogramm "Person mit "Adresse" verbinden
    Unterprogramm "Person von "Adresse" lösen
    Objektverbindung zum Objekt "Adresse"
Ende der Objekt-Definition

Anfang der Objekt-Definition "Adresse"
    Datenfeld "Strasse"
    Datenfeld "Hausnummer"
    Datenfeld "PLZ"
    Datenfeld "Stadt"
    Unterprogramm "Adresse" anlegen
    Unterprogramm "Adresse" löschen
    Unterprogramm "Person" in "Personen an dieser Adresse" eintragen
    Unterprogramm "Person" aus "Personen an dieser Adresse" entfernen
    Objektliste "Personen an dieser Adresse"
Ende der Objekt-Definition

Der Vorteil von Objekten wird schon bei dem einfachen Beispiel deutlich. Man kann beliebig Personen einer Adresse zuordnen oder wieder entfernen ohne die Programmierung zu ändern. Unterprogramme werden mit in die Opjekte geschrieben, deren Daten sie bearbeiten und sorgen dadurch dafür, dass das Programm übersichtlich bleibt. Man kann weitere Unterprogramme zu jedem Objekt schreiben, die man jeweils direkt dem entsprechenden Objekt zuteilt. Beispielsweise kann man Personen in ein Objekt "Geburtstagskalender" eintragen, oder Adressen auf einem Stadtplan anzeigen Lassen.

Die Programmierung mit Objekten wird schon dadurch vereinfacht, das wir normalerweise in Objekten denken. Ich frage niemanden, ob er mir seine Strasse, Hausnummer, Postleitzahl und Stadt gibt, sondern ich Frage nach der Adresse. Ich sage niemandem, dass ich mein Fahrzeug mit Motor und vier Rädern in die Werkstatt gebracht habe und deshalb mit dem Fahrzeug mit zwei Rädern aber ohne Motor fahre, sondern ich sage dass ich mein Auto zur Werkstatt gebracht habe und deshalb mit dem Fahrrad fahre.

Nur verwenden wir für Objekte die wir nutzen nicht das Wort Objekt, sondern den Namen des Objekts und genauso wird das bei BlitzMax auch gemacht. Nachdem ein Objekt definiert wurde, kann man es mit dem Namen verwenden. Daher sollte ein Name für ein Objekt so gewählt werden, dass daraus schon die Verwendung des Objekts ersichtlich ist. Jedoch sind die Namen der Objekte, Datenfelder, Unterprogamme usw. alle in englisch. Aber das braucht niemanden abzuschrecken, den kein Englisch versteht, denn man braucht keine all zu umfassenden Englischkenntnisse, um sich die regelmässig wieder kehrenden englischen Wörter zu merken. Eigenen Objekten kann man natürlich auch deutsche Namen geben.