OOP – Object-Oriented Programming
Daniel Shiffman erklärt in seinem Video sehr gut, was OOP ist und wozu man es braucht.
Bisher haben unsere Programme immer eine void setup() und eine void draw() Methode benutzt, als eine Art Framework für den Programmfluss. Außerdem sind meistens am Programmanfang Variablen vorhanden. Diese Variablen halten meistens Daten. In dem Methoden hingegen ist immer eine Art von Funktionalität beschrieben. OOP packt die Daten und die Funktionalität in ein Objekt zusammen.
Grundgedanke
Mit Methoden kann man bestimmte Aufgaben abstrahieren und leicht wiederverwenden. Abstraktion meint hier, dass es entscheidend ist was eine Methode tut und nicht wie sie im Detail funktioniert. Die Objekt-orientierte Programmierung erweitert diesen Ansatz, indem Variablen und Methoden zu Objekten gruppiert werden. Man definiert also ein Objekt und dessen Daten, sowie dessen Funktionalitäten. Das Objekt wird durch diese Eigenschaften nicht nur unterscheidbar, sondern auch vergleichbar.
Die Klasse – class
Die Klasse ist eine Art Schablone oder Bauplan aus dem Objekte erzeugt werden. In Processing wird ein neuer Tab erstellt.
Dieser bekommt den Namen der Klasse und wird üblicherweise mit einem Großbuchstaben am Anfang geschrieben.
Hier kann nun die Klasse ausformuliert werden.
class Ball { … }
Die Eigenschaften einer Klasse werden auch Attribute genannt. Sie werden am Anfang jeder Klasse definiert und bestehen aus Variablen.
Die Funktionalität einer Klasse wird in Form von Methoden realisiert. Über diese Methoden kann man Zugriff auf die Variablen nehmen oder bestimmte Funktionen ausführen lassen.
Daten, sowie Funktionalität werden innerhalb der Klasse formuliert.
Weiters findet man dort einen Konstruktor.
Dieser heißt genauso wie die Klasse selbst und wird zum Erzeugen eines Objekts benötigt. Der Standardkonstruktor besitzt keine Parameter, sobald allerdings ein Konstruktor (auch mit Parametern) definiert wird, steht der Standardkonstruktor nicht mehr zur Verfügung.
Eine Klasse ist im Wesentlichen nichts anderes als ein Datentyp. Wir erinnern uns: es gibt primitive Datentypen, so wie byte, int, long, float, double, char, boolean. Klassen sind sogenannte dynamische Datentypen, die wir selber geschrieben haben.
Im Hauptprogramm wird ein Objekt dann wie folgt erzeugt:
KlassenName instanzName = new KlassenName(Parameter des Konstruktors);
Man beachte das Schlüsselwort new
Das so erzeugte Objekt wird auch Instanz genannt.
Die Methoden können dann wie folgt aufgerufen werden.
instanzName.methodenName();
Übungen
Definiere folgende Begriffe:
- Objekt-Orientierte Programmierung
- Klasse
- Objekt
- Instanz
- new
Bugs
Erstelle einen Sketch mit dem Namen oop_bugs.
Erstelle nun eine Klasse, die wie in folgendem UML-Diagramm aufgebaut ist:
Die Käfer sollen sich in leicht zittrigen Bewegung fortbewegen. (walk())
Es sollen 40 Käfer erzeugbar sein und in einem Array abgelegt werden.
Bei Mausklick wird ein Käfer an der Stelle erzeugt, an die der User hingeklickt hat. Der Käfer soll eine beliebige Größe zwischen 30px und 70px aufweisen. (Hinweis: Methode void mousePressed() )
Code Inspiration von Andreas Pirchner.