5.3 Eigene Methoden in der Klasse
MeineTurtle |
|
![]() for (int
i=0;i<4;i++){ zeichnen lassen können. Wir implementieren jetzt eine Methode quadrat() in unserer neuen Klasse MeineTurtle, die genau diesen Kode ausführt. Der Quelltext sieht dann so aus:
|
|
Download: MeineTurtle.java (Vers.1) |
import turtle.*; public class MeineTurtle extends Turtle{ public MeineTurtle(TurtleWindow tWin){ super(tWin); } public void zeichneQuadrat(){ for(int i=0; i<4;i++){ forward(100); right(90); } } } |
Der
Quelltext MeineTurtle.java
lässt sich compilieren, starten lässt sich das Programm dagegen nicht, das
sollte uns aber nicht verwundern. Denn unsere Klasse beschreibt ja nur,
was die neue Turtle jetzt zusätzlich kann, aber was sie konkret tut, wenn wir wir den 'Zeichne!'-Schalter
drücken, ist ja noch nicht programmiert. Das schauen wir uns jetzt noch
an. |
|
Quadrate1.java |
import turtle.*; import java.awt.*; public class Quadrate1 extends TurtleFrame { MeineTurtle t1, t2; public Quadrate1(String title) { super(title); t1 = new MeineTurtle(tWin); t1.setColor(Color.RED); t2 = new MeineTurtle(tWin); t2.setColor(Color.BLUE); } public void zeichne() { t1.jumpTo(-150,50); t1.zeichneQuadrat(); t2.jumpTo(50,-150); t2.zeichneQuadrat(); } public static void main (String[] args) { new Quadrate1("Quadrate - Vers. 1"); } } |
Modifizierer public kein Rückgabe: void |
Das
Programm erzeugt beim Klicken auf den 'Zeichne!'-Schalter ein rotes
Quadrat im linken oberen Bereich und ein blaues im rechten unteren.
Zur Erstellung des Quelltextes benutzen wir wieder unsere Vorlage, müssen
aber einige kleine Korrekturen vornehmen. So sind
t1
und t2
jetzt keine Objekte mehr von
Turtle sondern von
MeinTurtle
(wichtig: die Klasse MeineTurtle
liegt im gleichen Verzeichnis wie
Quadrate1.java).
Die Änderungen sind im oben dargestellten Quelltext gelb unterlegt. In der
Methode zeichne()
können wir nun die Methode
zeichneQuadrat() aufrufen (grün
unterlegt). Eine Bemerkung zum Aufbau der Methode. Zuerst kommt das Wort public; damit legen wir fest, dass die Methode von anderen Programmen uneingeschränkt benutzt werden darf. Eine Methode kann dem Aufrufer einen Wert zurückgeben, das muss aber nicht sein. Wird keine Wert zurückgegeben, steht vor dem Methodennamen das reservierte Wörtchen void (= leer). Letzte Bemerkung: Jede Methode besitzt eine Parameterliste; sie ist in runden Klammern untergebracht. Ist die Parameterliste leer, so muss man dennoch das runde Klammenpaar setzten. Das hat den Vorteil, dass man auf den ersten Blick Methoden von Attributen unterscheiden kann. Die letzteren besitzen nie runde Klammern. Schließlich müssen Quadrate1 und MeineTurtle im gleichen Verzeichnis liegen (für Kenner: MeineTurtle.class kann auch in einem anderen Verzeichnis liegen, dann muss für Java dieses Verzeichnis in einem classpath gesetzt sein) Wenn wir wollen, dass die beiden Turtle-Objekte unterschiedlich große Quadrate zeichnen sollen, können wir unsere Methode zeichneQuadrat() nicht benutzen, mit ihr zeichnet die turtle nur Quadrate mit der Seitenlänge 100. Wir müssen also eine Methode implementieren, die flexibler ist: Die Lösung ist eine Methode mit einem Parameter, d.h. die Parameterliste ist nicht mehr leer. Die neue Methode: zeichneQuadrat(double
seite) |
mit dem Parameter
seite
vom Typ
double
teilen wir der Methode die Seitenlänge des zu
zeichnenden Quadrates mit. |
|
eine neue Methode zeichneQuadrat(...) |
|
Download: MeineTurtle.java |
Die gelb
unterlegten Stellen markieren die Veränderungen gegenüber der 'alten'
Methode. Wir erkennen, dass die Seitenlänge des gezeichneten Quadrats erst
beim Aufruf der Methode festliegt. Dazu wird die Variable
seite
in der Parameterliste deklariert und durch den Aufruf initialisiert. Wir
fügen unserer Klasse MeineTurtle
die neue Methode zeichneQuadrat(double
seite) hinzu.
Interessant ist, dass beide
Methoden zeichneQuadrat()
und zeichneQuadrat(double
seite) nebeneinander existieren
können. Sie haben zwar den gleichen Namen, unterscheiden sich aber in der
Parameterliste; wir sagen auch: sie unterscheiden sich in ihrer Signatur.
Diese unterschiedliche Signatur erlaubt es auch dem Compiler gleichnamige
Methoden zu unterscheiden. Dass Methoden gleichen Namens unterschiedliches
tun, nennt man in der Fachsprache auch Polymorphie (Vielgestaltigkeit). Im
Laufe des Kurses werden wir weitere Formen der Polymorphie kennen lernen |
Download: | Wie man
die neue Methode benutzt, zeigt die
das nachstehende Beispiel.
t1 und t2 müssen natürlich wieder MeineTurtle-Objekte sein. Auch müssen Quadrate2 und MeineTurtle wieder im gleichen Verzeichnis liegen.
|
zu | 5.4 Übungen |
zur Startseite | www.pohlig.de (C) MPohlig 2004 |