Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Processing 02

Processing 02

In diesem Tutorial werden wir sehen, wie wir unseren Ball aus dem vorherigen Tutorial als eine eigene Klasse implementieren können. So nähern wir uns der Objek-Orientierten-Programmierung in Processing. Dafür werden wir Schritt für Schritt das Beispiel P01_2_BouncingBall_mit_Vektoren erweitern.

Was ist Objekt-Orientierte-Programmierung?

Objekt-Orientierte-Programmierung ermöglicht es uns generische Objekte (Klassen) zu erstellen und diese dann zu nutzen. Dies hat den Vorteil, dass oft verwendete Kombinationen aus Variablen und Funktionen in einem einzigen Objekt zusammengefasst werden können und dadurch leichter abrufbar sind. Weiter theoretische Grundlagen unter: Wikipedia.

Objekte und Klassen?

Ein Objekt ist immer die Instanz einer Klasse. Die Klasse beschreibt also ein generisches Objekt welches dann mit verschiedenen Parametern als Objekt von der Klasse installiert werden kann. Zum Beispiel könnte es eine generische Klasse "Mensch" geben. Jeder individuelle Mensch ist nun eine Ableitung der Klasse, aber mit unterschiedlichen individuellen Merkmalen (Hautfarbe, Haarfarbe, Grösse, usw.).

Aus was besteht eine Klasse?

Eine Klasse besteht grundsätzlich aus: 1.Name der Klasse 2.Variablen der Klasse 3.Konstruktor der Klasse 4.Funktionen der Klasse

Ableitung

Mit diesem Wissen können wir nun unsere Klasse "Ball" ableiten. Processing02_3

Implementierung

Haben wir unsere generische Klasse "Ball" erstellt, können wir diese in unserem Hauptprogramm einbinden und nutzen. Dazu deklarieren wir zunächst ein Objekt, welches von unserer Klasse abgeleitet ist Ball ball; //Objekt deklarieren Im setup() initialisieren wir dann dieses Objekt ball = new Ball(); //Objekt initialisieren Dann können wir im draw() auf die Funktionen der Klasse zugreifen ball.update() ball.checkEdges() ball.display()

Argumente

Bis jetzt haben wir noch nicht die Kompleten Möglichkeiten der OOP (Objekt-Orienterte-Programmierung) ausgenutzt. Wir haben zwar eine Klasse und können diese nun implementieren, aber wenn wir beispielsweise mehrere Objekte der selben Klasse "Ball" erstellen, so sehen diese immer gleich aus und haben das selbe Verhalten. Um mehrere Objekte einer Klasse erstellen zu können, welche unterschiedlich aussehen und sich unterschiedlich verhalten verwenden wir sog. Argumente. Ein Argument kann sowohl bei der Initialisierung (also im Konstruktor der Klasse), als auch den einzelnen Funktionen einer Klasse übergeben werden. Im folgenden wollen wir, folgende Parameter bestimmen können: 1. Farbe der Objekte 2. Startposition der Objekte 3. Geschwindigkeit der Objekte 4. Grösse der Objekte Dazu bearbeiten wir zunächst unsere Klasse "Ball" und erstellen einen neuen Konstruktor: Processing02_4 Der neue Konstruktor (Konstruktor2) unterscheidet sich darin, dass er die von uns gewünschten Argumente direkt akzeptiert und an unsere Funktionen weitergibt. Beim Initialisieren müssen wir nun nur noch die gewünschten Argumente übergeben und können kann verschiedene Objekte der Klasse "Ball" zeichnen. Processing02_5

Merke!

- Klassen sind generische Objekte - Objekte sind initialisierte Ableitungen von Klassen - Argumente können den Objekten als Individualisierungs-Merkmale übergeben werden

Aufgaben

- Nutzt eure Kenntnisse und programmiert ein weiteres Argument für die Steuerung der Strichbreite

Mehrere Objekte einer Klasse

Der nächste Schritt ist es, ein Array von "Ball"-Objekten zu erstellen. Jedes der Objekte soll dabei die von uns zuvor individualisierten Parameter erhalten (Farbe, Startposition, Geschwindigkeit, Grösse). Unsere Klasse "Ball" bleibt also bestehen und wir müssen lediglich in unsrem Hauptprogramm einige Erweiterungen vornehmen.

1.Ein Array von Objekten

Zunächst deklarieren wir ein Array von Objekten Ball [] balls; //Array von Ball-Objekten Danach legen wir fest, wie viele Objekte wir darstellen möchten int numOfBalls = 20 //20 Bälle darstellen

2.Bälle instanzieren

Im setup() müssen wir diese Bälle nun instanzieren. Dazu definieren wir erst die Grösse des Arrays balls = new Ball[numOfBalls] Dann iterieren wir über die Anzahl unserer Bälle und instanzieren sie mit unterschiedlichen Argumenten. Weil alle andere Argumente haben sollen, nutzen wir dazu die Funktion random(). Processing02_6 Im draw() iterieren wir wieder über die Anzahl Bälle numOfBalls und rufen deren Funktionen zur Aktualisierung update(), zur Kantenkollision checkEdges() und Zeichnen display(). Processing02_7

Aufgaben:

- Lest und versteht Seiten 67 - 83 aus dem Buch "Nature Of Code" von Daniel Shiffman - Erweitert euer Beispiel "P02_3_Bouncing_Ball_OOP_Array" so dass ihr mehrere Bälle habt, welche auf euren Mauszeiger reagieren. Processing02_8

Weiteres:

- OOP - Tutorial mit Darstellungen - Learning Processing - Shiffman Seiten 121 - 137