Home > Informatik > Stufe EF > Lernbausteine

Parameter

Methoden ohne Parameter

Die einfachsten Methoden kommen ohne Parameter aus. Man erkennt solche Methoden daran, dass das Klammerpaar hinter dem Methodenbezeichner leer ist:

public void ausgeben()
// zeigt den BMI einer Person in der Konsole an
{
   System.out.println("Der BMI betraegt : " + getBMI() );
}

Diese Methode benötigt keine weiteren Informationen von außen. Wenn die Methode ausgeben aufgerufen wird, ruft sie ihrerseits die Methode getBMI auf, die übrigens auch keinen Parameter benötigt. Der Rückgabewert von getBMI wird dann an den String "Ihr BMI betraegt " angehängt und dann mit dem System.out.println-Befehl in der Konsole ausgegeben.

Methoden mit Parametern

Die meisten Methoden benötigen jedoch zusätzliche Informationen von außen, damit sie richtig funktionieren. Nehmen wir mal eine einfache Graphikmethode, die ein Rechteck zeichnen soll. Wohin soll das Rechteck gezeichnet werden? Welche Breite und welche Höhe soll das Rechteck haben. Vielleicht soll auch noch die Farbe des Rechtecks mit angegeben werden. Schon sind wir bei einer Methode mit sage und schreibe fünf Parametern:

   public void zeichneRechteck(int x, int y, int b, int h, Color farbe)
   {
      // Hier steht der Quelltext der Methode
   }

Der erste Parameter x legt die x-Position der linken oberen Ecke des Rechtecks fest, der zweite Parameter y die y-Position. Die Parameter b und h stehen für die Breite und Höhe des Rechtecks, und der letzte Parameter farbe entsprechend für die Farbe, in der das Rechteck gezeichnet werden soll. Sie sehen, die Parameter können unterschiedliche Datentypen haben. Die ersten vier Parameter sind in diesem Beispiel vom Typ int, der fünfte Parameter vom Typ Color.

Typische Fehler

Schüler und auch Schülerinnen machen immer wieder gerne folgenden gravierenden Fehler, den wir hier am Beispiel der Methode zeichneRechteck analysieren wollen.

Wenn man die Methode zeichneRechteck selbst schreibt, dann sieht der Kopf der Methode so aus:

public void zeichneRechteck(int x, int y, int b, int h, Color farbe)

Vor jedem Parameter muss der Datentyp (int, Color) angegeben werden, und die einzelnen Parameter werden durch Kommata getrennt.

Wenn man jetzt tatsächlich ein Rechteck zeichnen möchte, zum Beispiel in der paint-Methode einer Java-Anwendung, dann wird die Methode folgendermaßen aufgerufen:

zeichneRechteck(100,200,300,50,Color.YELLOW);

Viele Schüler(innen) machen nun den folgenden Fehler und schreiben:

zeichneRechteck(int x, int y, int b, int h, Color farbe);

Der Compiler liefert dann eine Fehlermeldung, weil diese Schreibweise völlig falsch ist. Andere Schüler(innen) schreiben hier:

zeichneRechteck(int 100, int 200, int 300, int 50, Color Color.YELLOW);

Auch das ist völlig falsch. Beim Aufrufen einer Methode mit Parametern dürfen die Datentypen auf gar keinen Fall mit angegeben werden. Auch die Namen der Parameter haben beim Aufruf nichts zu suchen. Beim Aufruf müssen nur die Werte angegeben werden, welche die Parameter übertragen sollen. Schauen wir uns dazu noch einmal den korrekten Aufruf der Methode zeichneRechteck an.

zeichneRechteck(100,200,300,50,Color.YELLOW);

Nun konzentrieren wir uns auf den ersten Parameter, die int-Zahl 100. Vergleichen wir jetzt den Aufruf der Methode mit der Deklaration der Methode:

public void zeichneRechteck(int x, int y, int b, int h, Color farbe)

Formale und aktuelle Parameter

Wir unterscheiden nun grundsätzlich zwischen formalen Parametern und aktuellen Parametern. Der formale Parameter heißt hier x, der aktuelle Parameter 100. Beide Parameter haben den Datentyp int. Das muss auch immer so sein: Der aktuelle Parameter muss den gleichen Datentyp besitzen wie der entsprechende formale Parameter.

Wenn wir beim Aufrufen der Methode den aktuellen Parameter 100 übergeben, so erhält in der Methode zeichneRechteck der formale Parameter x den aktuellen Wert 100. Hätten wir beim Aufruf der Methode als ersten Wert 130 in die Klammer geschrieben, so würde der formale Parameter x den aktuellen Wert 130 bekommen.

Beim Aufrufen einer Methode werden nur die aktuellen Parameter übergeben, das sind entweder Konstanten wie 100, 200, Color.BLACK und so weiter oder Variablen, die den gleichen Datentyp haben wie der zugehörige formale Parameter.

   int otto = 100;
   int anna = 200;
   int berta = 300;
   int heini = 50;
   Color gelb = Color.YELLOW;
   zeichneRechteck(otto,anna,berta,heini,gelb);

Dieser Quelltext ist zwar blanker Unsinn, aber dennoch völlig korrekt. Die Variable otto vom Datentyp int hat einen Wert, nämlich 100, und kann als aktueller Parameter beim Aufruf der Methode eingesetzt werden. Der Datentyp des aktuellen Parameters otto entspricht nämlich dem Datentyp des formalen Parameters x.