Objekte für alles

Nahezu alle professionelle Software, mit der wir heutzutage auf dem PC (oder Smartphone oder Tablet) arbeiten, ist mit Objekten programmiert. Wenn du ein Spiel spielst, kannst du davon ausgehen, dass jede einzelne Spielfigur ein Objekt ist. Die Spielfigur, die du steuerst, ist ein Objekt, das auf deine Tastatur- oder Mauseingaben reagieren und sich dann mithilfe ihrer Methoden bewegen kann, und die Spielfiguren, die der Computer steuert, haben Methoden, mit denen sie sich nach vorgegebenen Regeln ununterbrochen selbst bewegen. Spielfigur-Objekte haben Funktionen, die automatisch gestartet werden, sobald sie mit einer anderen Figur kollidieren oder wenn sie ein vorgegebenes Ziel erreicht haben.

Aber nicht nur Spiele bestehen aus Objekten. Auch so gut wie jede Alltagsanwendung, sei es ein Office-Programm, ein E‐Mail-Client, ein Webbrowser, ein Bildeditor oder ein Verwaltungsprogramm, verwendet massenweise Objekte, die das Betriebssystem Windows oder macOS, Linux, iOS oder Android als fertige Klassen zur Verfügung stellt. Jedes Fenster ist ein Objekt, jeder Button, jedes Bild, jedes Textfeld – alles das sind Objekte mit ganz bestimmten Eigenschaften (Position, Größe, Farbe, Text usw.) und mit Methoden (Objektfunktionen, die regeln, was passiert, wenn der Button geklickt wird, Funktionen für das Öffnen, Schließen, Anzeigen, Bewegen des Objekts). Deswegen haben Fenster, Buttons, Scrollbalken, Listen usw. in einem Betriebssystem meist das genau gleiche Layout: Sie werden alle immer aus den vorgegebenen Klassen des Betriebssystems erzeugt – denn Programmierer wollen ja nicht jeden Button neu erfinden, sondern sie verwenden den, den es schon gibt.

Welche Vorteile hat es, wenn man alles mit Objekten programmiert?

Die Vorteile sind für alle Programme, die mehr machen, als nur eine Berechnung durchzuführen, sehr groß. Man kann sogar sagen, ein Spiel oder überhaupt jede App mit grafischer Oberfläche, mit der der Benutzer kommuniziert, wäre ohne Objektprogrammierung kaum noch umsetzbar. Ohne Objekte müsste ein gigantisches Hauptprogramm, das in einer Schleife wieder und wieder durchlaufen werden muss, sich um jedes einzelne Element der Anwendung kümmern – wobei die Anzahl der Elemente sich ja auch noch ständig ändern kann. Hunderte bzw. Tausende von Elementen müssten mithilfe von massenweise Unterprogrammen und Steuerungscode permanent zentral überwacht, aktualisiert und geändert werden.

Verwendet man Objekte, ist der Ansatz ein ganz anderer. Jedes Objekt ist wie ein eigenes unabhängiges Programm, das sich nur um sich selbst und seine Interaktionen kümmert. Programmiert wird nicht mehr der Gesamtablauf des Programms von Anfang bis Ende, sondern es werden Objekte erstellt, und jedes Objekt erhält genau den Programmcode, der für das Objekt notwendig ist – in Form von Objektfunktionen (also Methoden). Jedes Objekt erhält also seine eigene kleine Intelligenz und kann mit seinem Umfeld und dem Gesamtsystem interagieren.

Es ist ein bisschen so, als würde man eine Menge kleiner Roboter bauen und jedem von ihnen Eigenschaften und Verhaltensanweisungen mitgeben. Danach setzt man sie alle zusammen in ein Spielfeld und schaut, wie sie miteinander umgehen. Man kann jeden einzelnen stoppen oder ihm klare Kommandos geben, sie können aber auch ihre eingebauten Programme verwenden und selbstständig handeln. Man kann sie aus dem Spiel nehmen oder jederzeit neue hinzufügen, man kann Kommandos an alle schicken, die befolgt werden müssen, man kann das ganze Spiel starten oder beenden.

[ → ] Beim objektorientierten Programmieren baust du dir alle Mitspieler selbst – entweder nach vorgegebenen Plänen oder nach eigenen –, und anschließend lässt du sie miteinander spielen und bleibst selbst der Dirigent.

Die meisten heutigen Programmiersprachen sind in erster Linie für objektorientiertes Arbeiten geschaffen. Java zum Beispiel erlaubt ausschließlich das Programmieren von Objekten, aber auch C++, C#, Objective-C, Swift und VisualBasic sind speziell für objektorientierte Programmierung entwickelt worden. Es gibt Baukastensysteme zum Lernen wie Scratch, wo man durchgehend mit vorgegebenen grafischen Objekten arbeitet, denen man Eigenschaften und Methoden hinzufügen kann, oder sehr einfach bedienbare Komplettsysteme wie LiveCode, in denen man sich alle Arten von Programmen aufgrund hunderter bereits eingebauter Objekttypen zusammenbauen kann. Sprachen für die Webprogrammierung wie JavaScript und PHP erlauben das lineare Programmieren für einfache Aufgaben ebenso wie das Erstellen und Verwenden von Objekten – und Python ist ebenfalls universell angelegt, aber von Anfang an vor allem als objektorientierte Sprache geschaffen.

Übrigens: Du hast in Python auch vorher schon sehr häufig mit internen Objekten gearbeitet – nur wusstest du es nicht: So sind in Python Variablen Objekte, Strings sind Objekte, Listen sind Objekte, der input-Befehl ruft ein Objekt auf, die Schildkröte ist ein Objekt usw. …