Creative Coding

btk

Till Nagel

Objekte 2 - Woche 6

Aufgaben

F1: Konstruktor

Erweitere die Ball-Klasse aus Übung E3 so, dass die Position und die Farbe über den Konstruktor gesetzt werden können. Die Geschwindigkeit eines erzeugten Ball-Objekts soll im Konstruktor zufällig gesetzt werden.

F2: Warholesk

   Lösung (mit Variationen)

Programmier eine Klasse, die ein Bild (PImage), eine Position und zwei Farben als Eigenschaften enthält. Die Klasse hat eine Methode drawImage(), die die Farben verwendet, um ein Hintergrund zu zeichnen und das Bild einzufärben.

Variation: Bei Mausklick auf ein Rechteck sollen die Farben dieses Objekts zufällig neu gesetzt werden.

Variation: Changiere die Farben der Objekte über die Zeit. Dabei sollen die Farben nur sanft vom vorigen Ton abweichen.


Eigenschaften

Letzte Stunde wurde gezeigt, dass man in Klassen Eigenschaften festlegen und definieren kann, die für alle Objekte gelten, aber in den verschiedenen Objektinstanzen unterschiedliche Werte haben können.

Vordefinierte Eigenschaften

Im obigen Beispiel werden die Werte der Positions-Eigenschaften nach der Erzeugung eines Balls gesetzt. Nun kann man diese Eigenschaften nicht nur von außen über die Punktnotation ändern, sondern auch vordefinieren. Das bedeutet, dass die Werte für alle Objekte zunächst gleich sind.

Man kann also die Variablen in einer Klasse ebenso mit Werten belegen, wie alle anderen Variablen auch.

Eigenschaften ändern

Es gibt zwei Arten, wie die Werte von Objekt-Eigenschaften verändert werden können:

  • von außen via Punktnotation
  • innerhalb der Klasse in Methoden.

Die Eigenschaft eines Ball-Objekts kann – wie wir im oberen Beispiel gesehen haben – etwa durch myBall2.y = 100; verändert werden. Zum Anderen kann diese Variable aber auch in der Klasse selbst einen neuen Wert erhalten:

Konstruktor

Wenn man ein Objekt einer Klasse mit Hilfe von new erzeugt, wird dieses Objekt konstruiert. Danach kann man die Methoden des Objekts aufrufen. Nun gibt es eine Spezial-Methode, die genau dann aufgerufen wird, wenn das Objekt erzeugt wird: der sogennante Konstruktor.

In dem Beispiel in Zeile 7 wird die Kontruktor-Methode definiert. Sie heisst immer genauso wie die Klasse selbst (hier also: "Ball"). Im Konstruktor können nun Dinge programmiert werden, die einmalig am Anfang ausgeführt werden sollen – ähnlich wie die setup()-Funktion am Anfang eines Processing-Sketches.

Vor allem aber können im Konstruktor Anfangswerte für die Eigenschaften des Objekts übergeben werden:

Wir können nun also direkt beim Erzeugen der Objekte die Position mit angeben. Dabei ist zu beachten, dass die Parameter nicht genauso heißen, wie die Eigenschaften, die damit gesetzt werden sollen. Im Beispiel wird dies gelöst, in dem vor den Parameternamen jeweils ein Unterstrich steht (x = _x;).

Natürlich können wir die so gesetzten Werte weiterhin ändern.

Multiple Objekte

Ein großer Nutzen von Objekten ist der, dass man sehr viele Objekte erzeugen kann, und diese dann unabhängig voneinander agieren können.

Wenn man nun beispielsweise nicht nur drei Bälle (wie in Übung E2), sondern noch mehr erzeugen möchte, kann man dazu auch ein Array verwenden.

Auf die einzelnen Objekte kann dann wie gewohnt mit Hilfe eines Index zugegriffen werden.

Array-Eigenschaften

Auch Processings eigene Objekte (wie PImage oder String) haben Eigenschaften und Methoden. Ein Array etwa hat die Eigenschaft length die die Anzahl der Elemente gespeichert hat. Dies kann man sehr gut für Schleifen einsetzen:

Creative Commons Lizenz: Namensnennung-NichtKommerziell-Weitergabe unter gleichen Bedingungen 2.0 (Deutschland)

© 2007 Till Nagel, All rights reserved – Alle Rechte vorbehalten.