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

Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

  • Upload
    watson

  • View
    26

  • Download
    2

Embed Size (px)

DESCRIPTION

Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben. Turtle zeichnet ein Quadrat. public void zeichne() { t1.jumpTo(-150,50); t1.forward(100); t1.right(90); t1.forward(100); t1.right(90); t1.forward(100); t1.right(90); - PowerPoint PPT Presentation

Citation preview

Page 1: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 1

© 2003 Pohlig

Die Klasse Turtle lernt dazuoderWie kann man selbst Turtle-Methoden schreiben

Page 2: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 2

© 2003 Pohlig

Turtle zeichnet ein Quadrat

public void zeichne() { t1.jumpTo(-150,50); t1.forward(100); t1.right(90); t1.forward(100); t1.right(90); t1.forward(100); t1.right(90); t1.forward(100); t1.right(90);}

Na ja!?

public void zeichne() { t1.jumpTo(-150,50); for (int i=0;i<4;i++){ t1.forward(100); t1.right(90); }}

Schon besser!

public void zeichne() { t1.jumpTo(-150,50); t1.zeichneQuadrat();}

Schon ganz gut!

Page 3: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 3

© 2003 Pohlig

Die Turtle lernt dazu

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); } } }

Was hier passiert, lernen wir erst später.

MeineTurtle lernt alles, was Turtle kann

Hier schreiben wir auf, was zeichneQuadrat() tun soll.public damit andere Programme, die Methode benutzen können.

Die Methode gibt keine Rückmeldung an den Aufrufer

Methoden haben hinter ihrem Namen immer ein rundes Klammernpaar

Hier steht, was beim Aufruf für eine Turtle t1 z.B. getan werden soll. Beachte Schreibweise ohne Punkt vor forward() etc.

Es wird dafür gesorgt, dass das Paket, in dem die Turtle liegt, zur Verfügung steht

Page 4: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 4

© 2003 Pohlig

Wir verwenden die neue Turtleimport 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"); }}

T1 und t2 sind keine Turtle-Objekte mehr, sondern MeineTurtle-Objekte!

Die Objekte t1 und t2 benutzen die neue Methode.

Page 5: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 5

© 2003 Pohlig

Übung

Programmieren Sie das nebenstehende Muster unter Verwendung der neuen Methode

public void zeichne() { for (int i=0;i<4;i++){ t1.zeichneQuadrat(); t1.right(90); }}

Page 6: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 6

© 2003 Pohlig

Mehr Flexibilität, bitte

Die Methode zeichneQuadrat() soll Quadrate unterschiedlicher Seitenlänge zeichnen können. public void zeichneQuadrat(double

seite){ for(int i=0; i<4;i++){ forward(seite); right(90); } }

Merke:Methoden in einer Klasse können gleiche Namen haben, sie müssen sich aber in der Signatur unterscheiden. D.h. die Parameterliste unterscheidet sich in der Anzahl oder/und in den Typen

Page 7: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 7

© 2003 Pohlig

Die neue Methode im Einsatzimport turtle.*;import java.awt.*;

public class Quadrate2 extends TurtleFrame { MeineTurtle t1, t2; public Quadrate2(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(80); t2.jumpTo(50,-150); t2.zeichneQuadrat(110); }

public static void main (String[] args) { new Quadrate2("Quadrate - Vers. 2"); }}

Page 8: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 8

© 2003 Pohlig

Übungen

Programmieren Sie das Muster, bestehend aus Quadraten unter Verwendung der Methode:zeichneQuadrat(Double seite)

public void zeichne() { for(int x=-200; x<200; x+=20){ for(int y=180; y>-200; y-=20){ t1.jumpTo(x,y); t1.zeichneQuadrat(15); } }}

Page 9: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 9

© 2003 Pohlig

Übung neue Circle-Methode

Schreiben Sie für die Klasse MeineTurtle 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.

Page 10: Die Klasse Turtle lernt dazu oder Wie kann man selbst Turtle-Methoden schreiben

Eigene Metoden (Turtle-Paket (C) Taulien 2003) 10

© 2003 Pohlig

Lösung

public void circle(double x, double y, double r){ double richtungsWinkel = getOrientation(); double altX = getX(); double altY = getY(); turnTo(90); jumpTo(x,y+r); left(90); circle(r); turnTo(richtungsWinkel); jumpTo(altX, altY); }

Retten der Orientierung und der PositionTurtle nach ´Norden´

absolut ausrichten und die Turtle auf den ´Nordpol´ setztenDie Turtle nach links wenden

lassen und den Kreis (links herum zeichnen. 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.