Wiki: Mathe und Info

Unterrichtsmaterialien für Mathematik und Informatik

Benutzer-Werkzeuge

Webseiten-Werkzeuge


info:sek-ii:e2:java-grundlagen:fk-seiteneffekt

Fachkonzept: Seiteneffekt

Es gibt einen großen Unterschied zwischen Methoden und boolschen Funktionen. Während Methoden dem Hamster befehlen, etwas zu tun, geben boolsche Funktionen dem Hamster Rückmeldungen über seine Umgebung. Methoden verändern also den Zustand (Blickrichtung, Position, Körneranzahl im Maul) des Hamsters, boolsche Funktionen den Zustand abfragen und Wahrheitswerte zurückliefern.

Wenn jetzt aber eine boolsche Funktion zusätzlich den Zustand des Hamsters verändert, spricht man von einem Seiteneffekt.

Die erste Version der boolschen Funktion linksFrei() aus dem Beispiel von Lektion 4 produziert beispielsweise immer einen Seiteneffekt, denn nach ihrer Ausführung hat der Hamster eine andere Blickrichtung als vorher.

boolean linksFrei() {
  linksUm();
 
  return vornFrei();
}

Genauso wie die drei vordefinierten Testbefehle keine Zustandsänderungen bewirken, also niemals Seiteneffekte produzieren, sollten auch boolesche Funktionen keine Seiteneffekte hervorrufen. Dies kann man erreichen, indem man die zum Berechnen des Ergebnisses notwendigen Zustandsänderungen wieder rückgängig macht. Im Beispiel oben ist linksUm() notwendig, um mit vornFrei() überprüfen zu können, ob "global gesehen" links frei war. Insgesamt hat der Hamster also seine Blickrichtung verändert. Wie man das rückgängig macht, lernt ihr gleich in Lektion4.

Seiteneffektfreie Funktionen führen zu besser lesbaren und weniger fehleranfälligenden Programmen, da wie oben bereits beschrieben von boolschen Funktionen genau so wie von den eingebauten Testbefehlen nicht erwartet wird, dass sie den Zustand des Hamsters verändern.

info/sek-ii/e2/java-grundlagen/fk-seiteneffekt.txt · Zuletzt geändert: 2020-03-17 15:56 von christian.weber