1 / 10

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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!? Schon ganz gut! public void zeichne() { t1.jumpTo(-150,50); t1.zeichneQuadrat(); } public void zeichne() { t1.jumpTo(-150,50); for (int i=0;i<4;i++){ t1.forward(100); t1.right(90); }} Schon besser! Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  3. Es wird dafür gesorgt, dass das Paket, in dem die Turtle liegt, zur Verfügung steht MeineTurtle lernt alles, was Turtle kann Konstruktor ruft den entsprechenden Konstruktor der Vaterklasse auf Hier schreiben wir auf, was zeichneQuadrat() tun soll. Methoden haben hinter ihrem Namen immer ein rundes Klammernpaar Die Methode gibt keine Rückmeldung an den Aufrufer Hier steht, was beim Aufruf für eine Turtle t1 z.B. getan werden soll. Beachte Schreibweise ohne Punkt vor forward() etc. public damit andere Programme, die Methode benutzen können. 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); } } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  4. T1 und t2 sind keine Turtle-Objekte mehr, sondern MeineTurtle-Objekte! Die Objekte t1 und t2 benutzen die neue Methode. Wir verwenden die neue Turtle 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"); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  5. Ü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); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  6. Mehr Flexibilität, bitte Die Methode zeichneQuadrat() soll Quadrate unterschiedlicher Seitenlänge zeichnen können. 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 public void zeichneQuadrat(double seite){ for(int i=0; i<4;i++){ forward(seite); right(90); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  7. Die neue Methode im Einsatz import 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"); } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  8. Ü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); } } } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  9. Ü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. Eigene Metoden (Turtle-Paket (C) Taulien 2003)

  10. Retten der Orientierung und der Position Turtle nach ´Norden´ absolut ausrichten und die Turtle auf den ´Nordpol´ setzten Die Turtle nach links wenden lassen und den Kreis (links herum zeichnen. Es wird die alte Methodecircle(double r) (andere Signatur) verwendet. Turtle wieder in die alte Richtung schauen lassen und auf ihren alten Platz setzen. 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); } Eigene Metoden (Turtle-Paket (C) Taulien 2003)

More Related