2003 Pohlig Die Klasse Turtle lernt dazu oder










- Slides: 10

© 2003 Pohlig Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben Eigene Metoden (Turtle-Paket (C) Taulien 2003)

© 2003 Pohlig Turtle zeichnet ein Quadrat Schon ganz gut! public void zeichne() { t 1. jump. To(-150, 50); t 1. zeichne. Quadrat(); } public void zeichne() { t 1. jump. To(-150, 50); t 1. forward(100); t 1. right(90); } public void zeichne() { t 1. jump. To(-150, 50); for (int i=0; i<4; i++){ t 1. forward(100); t 1. right(90); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003) Na ja!? Schon besser! 2

© 2003 Pohlig Die Turtle lernt dazu import turtle. *; Es wird dafür gesorgt, dass das Paket, in dem die Turtle liegt, zur Verfügung steht public class Meine. Turtle extends Turtle{ public Meine. Turtle(Turtle. Window t. Win){ super(t. Win); } } Meine. Turtle lernt alles, was Turtle kann Was hier passiert, lernen wir erst später. Hier schreiben wir auf, was zeichne. Quadrat() tun soll. Methoden haben hinter Die Methode gibt keine Hier steht, was beim public damit andere ihrem Namen immer Rückmeldung an den ein Aufruf für eine Turtle t 1 Programme, die Methode rundes Klammernpaar Aufrufer z. B. getan werden soll. benutzen können. Beachte Schreibweise ohne Punkt vor Eigene Metoden (Turtle-Paket (C) Taulien 2003) forward() etc. public void zeichne. Quadrat(){ for(int i=0; i<4; i++){ forward(100); right(90); } } 3

© 2003 Pohlig Wir verwenden die neue Turtle import turtle. *; import java. awt. *; public class Quadrate 1 extends Turtle. Frame { Meine. Turtle t 1, t 2; public Quadrate 1(String title) { super(title); t 1 = new Meine. Turtle(t. Win); t 1. set. Color(Color. RED); t 2 = new Meine. Turtle(t. Win); t 2. set. Color(Color. BLUE); } public void zeichne() { t 1. jump. To(-150, 50); t 1. zeichne. Quadrat(); t 2. jump. To(50, -150); t 2. zeichne. Quadrat(); } } T 1 und t 2 sind keine Turtle-Objekte mehr, sondern Meine. Turtle. Objekte! Die Objekte t 1 und t 2 benutzen die neue Methode. public static void main (String[] args) { new Quadrate 1("Quadrate - Vers. 1"); } Eigene Metoden (Turtle-Paket (C) Taulien 2003) 4

© 2003 Pohlig Übung Programmieren Sie das nebenstehende Muster unter Verwendung der neuen Methode public void zeichne() { for (int i=0; i<4; i++){ t 1. zeichne. Quadrat(); t 1. right(90); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003) 5

© 2003 Pohlig Mehr Flexibilität, bitte Die Methode zeichne. Quadrat() soll Quadrate unterschiedlicher Merke: Seitenlänge zeichnen können. Methoden in einer Klasse können public void zeichne. Quadrat(double gleiche Namen haben, sieseite){ müssen sich for(int i=0; i<4; i++){ aber in der Signatur unterscheiden. forward(seite); D. h. die Parameterliste unterscheidet right(90); sich in der Anzahl oder/und in den } Typen } Eigene Metoden (Turtle-Paket (C) Taulien 2003) 6

© 2003 Pohlig Die neue Methode im Einsatz import turtle. *; import java. awt. *; public class Quadrate 2 extends Turtle. Frame { Meine. Turtle t 1, t 2; public Quadrate 2(String title) { super(title); t 1 = new Meine. Turtle(t. Win); t 1. set. Color(Color. RED); t 2 = new Meine. Turtle(t. Win); t 2. set. Color(Color. BLUE); } public void zeichne() { t 1. jump. To(-150, 50); t 1. zeichne. Quadrat(80); t 2. jump. To(50, -150); t 2. zeichne. Quadrat(110); } } public static void main (String[] args) { new Quadrate 2("Quadrate - Vers. 2"); } Eigene Metoden (Turtle-Paket (C) Taulien 2003) 7

© 2003 Pohlig Übungen Programmieren Sie das Muster, bestehend aus Quadraten unter Verwendung der Methode: zeichne. Quadrat(Double seite) public void zeichne() { for(int x=-200; x<200; x+=20){ for(int y=180; y>-200; y-=20){ t 1. jump. To(x, y); t 1. zeichne. Quadrat(15); } } } Eigene Metoden (Turtle-Paket (C) Taulien 2003) 8

© 2003 Pohlig Übung neue Circle-Methode Schreiben Sie für die Klasse Meine. Turtle eine Methode circle(…), die es erlaubt einen einem Turtle-Objekt einen Kreis zu zeichnen, wobei man x- y-Koordinate und Radius des Kreises (in dieser Reihenfolge) übergibt. Signatur: public void circle(double x, double y, double r) Zusicherung: Die Turtle soll nach dem sie den Kreis gezeichnet hat, sich wieder in ihrer alten Position befinden und ihre alte Orientierung wieder haben. Eigene Metoden (Turtle-Paket (C) Taulien 2003) 9

© 2003 Pohlig Lösung public void circle(double x, double y, double r){ Retten der double richtungs. Winkel = get. Orientation(); Orientierung und double alt. X = get. X(); der Position double alt. Y = get. Y(); turn. To(90); Turtle nach ´Norden´ absolut jump. To(x, y+r); ausrichten und die Turtle auf left(90); den ´Nordpol´ setzten circle(r); Die Turtle nach links wenden lassen turn. To(richtungs. Winkel); und den Kreis (links herum zeichnen. jump. To(alt. X, alt. Y); Es wird die alte Methode } circle(double r) (andere Signatur) verwendet. Turtle wieder in die alte Richtung schauen lassen und auf ihren alten Platz setzen. Eigene Metoden (Turtle-Paket (C) Taulien 2003) 10