Zurück zum Fußballmanager-Programm: Während des Spielverlaufs können sich die Stärken der Fußballspieler ändern: Spieler können trainiert werden, sie können Leistung abbauen, an Erfahrung gewinnen usw.
Aus diesem Grund bieten wir Operationen an, mit denen die Spielerstärken auf neue Werte gesetzt werden können:
PROCEDURE fussballspieler_tor_set(ob#,staerke&) !call ' ' Setzt die Tor-Stärke des Spielers. Die Werte werden auf den ' Breich 0..100 gestutzt. ' RETURN PROCEDURE fussballspieler_abwehr_set(ob#,staerke&) !call ' ' Setzt die Abwehr-Stärke des Spielers. Die Werte werden auf den ' Breich 0..100 gestutzt. ' RETURN PROCEDURE fussballspieler_mitte_set(ob#,staerke&) !call ' ' Setzt die Stärke im Mittelfeld des Spielers. Die Werte werden auf ' den Breich 0..100 gestutzt. ' RETURN PROCEDURE fussballspieler_sturm_set(ob#,staerke&) !call ' ' Setzt die Sturm-Stärke des Spielers. Die Werte werden auf den ' Breich 0..100 gestutzt. ' RETURN
Der Name eines Spielers kann sich im Spielverlauf hingegen nicht ändern, von daher wird auch keine Operation definiert, mittels derer er neu gesetzt werden kann.
An dieser Stelle kann man übrigens auch bei den Spielerstärken in Erwägung ziehen, gar nicht die Möglichkeit zu geben, sie von außen auf explizite Werte zu setzen. Stattdessen könnte man vielleicht auch die Operationen ...
PROCEDURE fussballspieler_training(ob#,pos&) !call ' ' Ändert die Stärken des Spielers, wenn dieser am Training ' teilnimmt. (pos&: 0=allg., 1=Tor, 2=Abwehr, 3=Mitte, 4=Sturm) ' RETURN PROCEDURE fussballspieler_spiel(ob#,pos&) !call ' ' Ändert die Stärken des Spielers, wenn dieser an einem Spiel ' teilnimmt. (pos&: 0=allg., 1=Tor, 2=Abwehr, 3=Mitte, 4=Sturm) ' RETURN
... anbieten. Diese Funktionen sind nach außen hin nun ja sehr bequem zu benutzen.
Ferner ist es vielleicht gar nicht erwünscht, daß Prozeduren, die die Spielerstärken auf explizite Werte setzen können, außerhalb des Zuständigkeitsbereichs des Fußballspieler-Moduls fallen. Man denke auch an die "Word-Variable mit Zugriffszähler" aus dem ersten Kursteil, deren Zähler man zwar von außen abfragen, aber niemals selbst den Wert auf andere Weise ändern kann, als daß man lesend oder schreibend auf die Word-Variable zugreift und den Zähler dadurch inkrementieren läßt.
Hier konnte also aufgezeigt werden, wie man sich bei der Modulkonstruktion gegen die Außenwelt bei Bedarf absichern kann. Im ersten Kursteil wurde ja von einer "Einschränkung des Zugriffs auf das für die Benutzung Wesentliche" gesprochen. Dies wird an dieser Stelle sehr gut deutlich, denn "trainieren" und "spielen lassen" sind wohl die im wesentlich benutzen Operationen auf Fußballspielern.
Wir bleiben der Einfachheit halber aber bei der oben gemachten Spezifikation mit der Möglichkeit, alle Werte einzeln setzen zu können.