Creative Coding

btk

Till Nagel

Objekte 1 - Woche 8

Aufgaben

E2: Ball

Lösung

Definiere eine Klasse mit dem Namen "Ball" und Eigenschaften für Position, Durchmesser und Farbe und einer Methode, die den Ball zeichnet. Erzeuge ein Objekt mit dem Namen "redBall" und weise diesem einen zufällig gewählten Durchmesser und rot als Farbe zu. Die Position soll jeweils an der aktuellen Mausposition sein.

Variation

Variation: Erzeuge zwei weitere Bälle, die feste, zufällige Positionen haben.

Variation: Denk dir weitere Eigenschaften aus (z.B. Strichstärke).

E3: Der bewegte Ball

Lösung

Erweitere die Klasse Ball um Geschwindigkeitsvariablen. Definiere desweiteren eine Methode move, die die Position um die Geschwindigkeit verändert.

Es soll also solch eine Verwendung in draw() möglich werden:

Variation: Erweitere die Methode move() so, dass der Ball an den Ecken abprallt.

Diskussion: Wie kann man nun mehrere Bälle auf einmal animieren?


Objektorientierte Programmierung

Objektorientiertes Programmieren (OOP) ist ein Programmierkonzept, dass von den meisten höheren Programmiersprachen wie Processing oder ActionScript unterstützt wird. Objektorientierte Programme sind nicht unbedingt schneller oder schlanker, sie sind aber oft besser zu verstehen. In diesem Sinne bedeutet OOP vor allem, anders über Programmierung nachzudenken. Im Mittelpunkt des OOP steht das Objekt. Statt mit einzelnen Funktionen und Variablen zu arbeiten, bietet OOP die Möglichkeit, eine Reihe von Eigenschaften und Methoden abzukapseln und sie als eine Einheit, bzw. als ein Objekt zu behandeln. Diese Objekte können dann ein hohes Maß an Komplexität bekommen. Jedem Objekt liegt eine Klasse zugrunde, in der schon die grundsätzliche Struktur aller Objekte angelegt ist.

Eigenschaften und Methoden

Jedes Objekt hat Eigenschaften und Methoden. Die Eigenschaften bestimmen wie ein Objekt ist, die Methoden, was das Objekt tun kann. Das Konzept der Objekte wurde aus der realen Welt entlehnt, daher ist es oft eingängiger und nachvollziehbarer als etwa mit vielen Arrays zu arbeiten.

So hat vielleicht der Strandball einen Durchmesser von 20cm, ist rot-weiß gestreift und aus Plastik (Eigenschaften). Und man kann den Ball nun werfen, treten oder auch die Luft herauslassen (Methoden).

Klassen und Objekte

Eine Klasse ist eine abstrakte, ordnende Struktur, der man eine Reihe von Eigenschaften und Methoden zuweisen kann. Ein Objekt nun ist eine konkrete Variante dieser Klasse, eine sogennante Instanz.
Um zum Beispiel zurück zu kommen: Es gibt natürlich unzählige verschiedene Bälle auf der Welt, aber alle haben ein paar Dinge gemein: Sie haben eine Größe, eine Farbe und ein Material.

Strukturiert sieht die Klasse dann so aus. Ein Ball hat allgemein folgende Eigenschaften:

  • Größe
  • Farbe
  • Material

Und jeder einzelne Ball, jedes Objekt, hat eine ganz spezielle Größe und eine ganz spezielle Farbe.

Unser Strandball etwa hat folgende Eigenschaften:

  • Größe: 20cm
  • Farbe: rot-weiß gestreift
  • Material: Plastik

OOP in Processing

Bei der objektorientierten Programmierung in Processing müssen ein Menge Dinge beachtet werden. Zum Verständnis zeige ich im Folgenden ein Programm, das ein Kreis zeichnet: Einmal im "klassischen" Verfahren und dem gegenüber gestellt das Programm in OOP.

Das nächste Programm zeigt, wie dies nun mit einem Objekt umgesetzt werden kann:

Im Beispiel haben wir eine Klasse Ball definiert. Dies geschieht, indem man class und den Namen der Klasse und dann einen Programmblock (umfasst von geschweiften Klammern) hinschreibt. In diesen Block werden die Eigenschaften und Methoden der Klasse definiert.

Innerhalb der Klasse haben wir eine eigene Funktion definiert (drawShape). Interne Funktionen von Klassen werden in der OOP Methoden genannt.

Wir haben also die allgemeine Struktur definiert und möchten jetzt einen konkreten Ball erstellen. Um ein Objekt dieser Klasse zu erzeugen, verwendet man new:

Es gibt danach ein neues Objekt mit dem Namen myBall. Über diese Variable kann danach die Methode aufgerufen werden:

Dies führt dazu, dass die Methode aufgerufen wird und das Rechteck gezeichnet wird. Diese Verwendung von Methoden nennt man aufgrund des Punktes zwischen Objekt-Variablennamen und Methodennamen die Punktnotation.

Ablauf der OOP

Um Objekte einsetzen zu können, muss man

  1. Eine eigene Klasse definieren
  2. Objekte mit Hilfe der Klasse erzeugen (sogenannte Instanzen)
  3. Diese Objekte verwenden

Eigenschaften

Wie oben gesehen, kann eine Klasse nicht nur Methoden, sondern auch Eigenschaften haben. Diese werden direkt in die Klasse geschrieben.

Von aussen können die Eigenschaften nun genutzt, d.h. aktuelle Werte ausgelesen oder neue Werte gespeichert werden.

Und natürlich können die Eigenschaften auch und vor allem in der Klasse selbst verwendet werden. Innerhalb der eigenen Methoden muss nicht die Punktnotation genutzt werden:

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

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