Turtlegrafik mit Java

HomeAufgabenDruckenJava-Online

Eigene Methoden schreiben


Komplexe Programme können mit Hilfe von Methoden in kleinere, leichter zu programmierende Teilprogramme zerlegt werden. Solche Teilprogramme können zudem mehrmals verwendet werden. Eine Methodendeklaration umfasst einen Methodenkopf und einen Anweisungsblock. Der Methodenkopf bestehend aus dem Typ des Rückgabewertes (void bei Methoden ohne Rückgabewert), dem Methodennamen und einer Parameterklammer. Die Methode wird mit dem Methodennamen gefolgt von einer Parameterliste aufgerufen. Falls keine Parameter übergeben werden, ist diese leer.

Wir zeigen diese Programmiertechnik an einem einfachen Beispiel:
Beim Zeichnen eine Blume werden Methoden arc() und petal() verwendet.



  Die Methode arc() zeichnet einen Viertelkreis
  Um ein Blatt zu zeichnen, schreiben wir eine Methode petal() ("Blütenblatt"). In dieser wird die Methode arc() zweimal aufgerufen
 

Im Hauptprogramm wird die Methode petal() in einer for-Schleife aufgerufen, um alle 8 Blätter der Blume zu zeichnen.

// Tu11.java

import ch.aplu.turtle.*;

public class  Tu11
{
  Turtle = new Turtle();

  public Tu11()
  {
    t.speed(-1);
    for (int = 0; k < 8; k++)
    {
      petal();
      t.right(45);
    }
  }

  void arc()
  {
    for(int = 0; i < 30; i++)
    {
      t.forward(4);
      t.right(3);
    }
  }

  void petal()
  {
    arc();
    t.right(90);
    arc();
  }

  public static void main(String[] args)
  {
    new Tu11();
  }
}
 

Erklärungen zum Programmcode:

void arc()
{
 
}

Methodendeklaration

arc()

Methodenaufruf

void petal()
{
    arc();
    t.right(90);
    arc();  
}  

arc() ist Methodenaufruf einer eigenen Methode, deshalb ist kein t.nötig, im Gegensatz zum Methodenaufruf t.right(90), wo eine Methode aus der Klasse Turtle verwendet wird

 


Noch schönere Blume entstehen, wenn man die Blumenblätter mit roten Farbe füllt. Im Programmcode braucht es nur zwei zusätzlichen Zeilen.

// Tu11a.java

import ch.aplu.turtle.*;
import java.awt.Color;

public class  Tu11a
{
  Turtle = new Turtle();

  public Tu11a()
  {
    t.speed(-1);
    t.setPenColor(Color.red);
    t.fillToPoint(0, 0);
    for (int = 0; k < 8; k++)
    {
      petal();
      t.right(45);
    }  
  }
  
  void arc()
  {
    for(int = 0; i < 30; i++)
    {
      t.forward(4);
      t.right(3);
    }
  }  
  
  void petal()
  {
    arc();
    t.right(90);
    arc();  
  }  

  public static void main(String[] args)
  {
    new Tu11a();
  }
}
 

Erklärungen zum Programmcode:

speed(-1)
setPenColor(Color.red)
fillToPoint(0, 0)

Es ist darauf zu achten, dass die Methoden korrekt aufgerufen werden. Methoden, die eine allgemeine Zustandänderung bewirken, sollten nicht in einer Wiederholungsstruktur aufgerufen werden. In unserem Beispiel wäre nicht sinnvoll, die Stiftfarbe oder Turtlespeed beim Zeichnen jedes einzelnen Blattes erneut zu setzen. Auch die fillToPoint() Methode kann im Konstructor (vor der for-Schleife) nur einmal aufgerufen werden, da immer vom gleichen Punkt aus gefüllt wird