In diesem Level lernst du, wie man Klassen aus Bibliotheken einbinden und eigene Klassen erstellst. Du lernst was Instanzen von Klassen sind und wir strukturieren die Anwendung etwas um.
| Thema | Voraussetzungen |
|---|---|
| Schwierigkeit | *** |
| Hardware | PC (Windows/Mac/Linux) |
| Software | Browser, Internetzugang, Processing IDE |
| CatcherTutorial Level | 0,1,2 |
| Programmierung | Aufruf von Funktionen, Variablen, Events (mousePressed), Bedingte Anweisung und Verzweigung (if, else)), Funktionen, for-Schleife |
Bisher hast du nur Klassen aus der Processing Bibliothek verwendet. Bevor wir uns eine Erweiterung anschauen... Was sind eigentlich Klassen? Klassen sind Bauanleitungen für Objekte. Objekte wiederum sind konkrete Instanzen (lebendige Kopien der Klasse) im Arbeitsspeicher deines Computers. Auf ihnen kannst du Funktionen aufrufen und du kannst sie in dem Fenster anzeigen lassen. Immer wenn du ein Objekt erzeugst geschieht dies auf Grundlage einer Klasse.
Das kann zum einen implizit geschehen. Beispielsweise beim Aufruf von: createShape(ELLIPSE, 0, 0, 10, 10); Dies ist eine Funktion, die ein PShape Objekt erstellt und zurück gibt. Zum anderen kannst du Objekte explizit durch das new-Schlüsselwort erzeugen. Beispielsweise beim Erzeugen einer neuen Liste.
PShape shape = createShape(ELLIPSE, 0, 0, 10, 10);
ArrayList<Float> list = new ArrayList<Float>();
Da Processing auf der Programmiersprache Java basiert, kannst du auch Klassen aus der Standard Java Bibliothek verwenden, um Objekte zu erzeugen. Hierfür musst du die konkrete Klasse importieren. Import Befehle müssen immer ganz am Anfang deiner Datei stehen.
import java.util.Stack;
Neben der Möglichkeit bereits bestehende Klassen zu verwenden, kannst du auch eigene Klassen erstellen. Diese sollten am besten in eine separaten Datei ausgelagert werden. In der Klasse können Variablen und Funktionen wie bereits gelernt verwendet werden.
class Catcher {
int a = 4;
void doSomeWork(){
}
}
Solch eine Klasse kannst du instanziieren (also ein Objekt davon erzeugen) und dann auf die Attribute (Variablen) und Funktionen zugreifen.
Catcher catcher = new Catcher();
void draw(){
int b = catcher.a; // b wird auf 4 gesetzt
catcher.doSomeWork(); // Aufruf der Catcher Methode doSomeWork()
}
Klassen besitzen wie Processing eine Möglichkeit bestimmten Programmcode nur einmal beim ersten Erstellen auszuführen. Diese Möglichkeit heißt Konstruktor. Das ist mit der setup-Methode vergleichbar.
class Catcher {
int a = 4;
public Catcher(){ // Wird einmalig beim Instanziieren ausgeführt
}
void doSomeWork(){
}
}
float playerPosX;
Game game;
void setup() {
size(400, 640);
game = new Game();
}
void draw() {
background(50);
if (mousePressed) {
playerPosX = mouseX;
}
game.execute();
}