content

Formel

Code

Gegeben ist folgender Code:

public class Formel
{
    public int calc(int a, int b)
    {
        return a+b;
    }
    
    public int calc(boolean ok, int value)
    {
        if (ok == true)
        {
            return 2*value;
        }
        else
        {
            return value+1;
        }
    }
    
    public int calc(int x, int y, int z)
    {
        int res;
        res = calc(true, z) + calc(x, z) + calc(false, y);
        return res;
    }
}

Die drei Methoden haben eine unterschiedliche Signatur:

calc int int

calc boolean int

calc int int int

Aufruf

001.png

Durch den Methodenaufruf wird die Methode mit der Signatur calc int int int ausgeführt.

Dabei ist:

  1. Parameter 1

  2. Parameter 2

  3. Parameter 3

002.png

Durchführung

Aufruf

003.png

Es wird die Methode mit der Signatur calc boolean int aufgerufen.

  1. Parameter true

  2. Parameter 3

Durchführung

004.png

Die if Abfrage liefert true

Es wird 2*3 = 6 zurückgegeben

Rücksprüng in die Methode

Es folgen weitere Methodenaufrufe nach dem selben Schema.

Debugger

Der Code muss Syntaxfehler FREI sein.

005.png

Das STOP Symbol definiert einen Haltepunkt.

006.png

Das Programm wird beim Erreichen des Haltepunktes angehalten.

007.png

Instance varibles … sind die Eigenschaften

Local variables … sind die Parameter und die lokalen Variablen

Step … springt über die Methode drüber

Step Into … springt in die Methode hinein

Unnötige Parameter

    public int calc(int x, int y, int z, boolean ja)
    {
        int res;
        res = calc(true, x) + calc(x, z) + calc(false, x);
        return res;
    }

Es werden die Parameter x und z verwendet.

Somit wurden die Parameter y und ja nicht verwendet und sind aus dem Methodenkopf zu entfernen.

    public int calc(int x, int z)
    {
        int res;
        res = calc(true, x) + calc(x, z) + calc(false, x);
        return res;
    }

Achtung nun passt die Signatur möglicherweise nicht!