Das ATOS-Magazin 3/99
ATOS Programmierpraxis
Moderne Zeiten

# Die fertige Spezifikation im Überblick

Die Spezifikation für das Fußballspieler-Speicherobjekt im Ganzen ergibt sich also wie folgt:

    FUNCTION fussballspieler(name$,position&,staerke&)              !call
      '
      ' Diese Funktion legt ein Objekt des Typs fussballspieler an und
      ' gibt die Objektkennung zurück.
      '
      ' name$       => Name des Fußballspielers (bspw. "Lothar Matthäus")
      ' position&   => Position, auf der der Spieler besonders stark ist.
      '                     fussballspieler_position_tor_&
      '                     fussballspieler_position_abwehr_&
      '                     fussballspieler_position_mitte_&
      '                     fussballspieler_position_sturm_&
      ' staerke&    => Staerke des Spielers im Mittel.
      '                     (0 = sehr schlecht, 100 = sehr gut)
      '
    ENDFUNC
    PROCEDURE fussballspieler_init(ob#,name$,position&,staerke&)    !call
    RETURN
    PROCEDURE fussballspieler_exit(ob#)                             !call
    RETURN
    PROCEDURE fussballspieler_free(ob#)                             !call
      '
      ' Diese Prozedur entfernt ein Objekt des Typs fussballspieler aus
      ' dem Speicher.
      '
    RETURN
    FUNCTION fussballspieler_name$(ob#)                             !call
      '
      ' Ermittelt den Spielernamen.
      '
    ENDFUNC
    FUNCTION fussballspieler_tor(ob#)                               !call
      '
      ' Ermittelt die Tor-Stärke des Spielers.
      '
    ENDFUNC
    FUNCTION fussballspieler_abwehr(ob#)                            !call
      '
      ' Ermittelt die Abwehr-Stärke des Spielers.
      '
    ENDFUNC
    FUNCTION fussballspieler_mitte(ob#)                             !call
      '
      ' Ermittelt die Stärke im Mittelfeld des Spielers.
      '
    ENDFUNC
    FUNCTION fussballspieler_sturm(ob#)                             !call
      '
      ' Ermittelt die Sturm-Stärke des Spielers.
      '
    ENDFUNC
    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

Jetzt kann zum einen mit der Realisation, zum anderen aber auch bereits mit der Entwicklung von Programmteilen, die solche Objekte benutzen, begonnen werden.

Für die Vereins-Objekte legen wir nun noch die folgende Spezifikation fest:

    FUNCTION verein(name$,staerke&)                                 !call
      '
      ' name$       => Vereinsname (bspw. "FC 08 Homburg")
      ' staerke&    => Stärke der Spieler des Vereins im Mittel.
      '                     (0 = sehr schlecht, 100 = sehr gut)
      '
      ' Außerdem sind die Namen der 11 aufzustellenden Fußballspieler zu
      ' übergeben. Diese Namen müssen dazu in DATA-Zeilen abgelegt werden
      ' und der _DATA-Zeiger muß mit RESTORE auf den ersten Namen gesetzt
      ' werden.
      '
    ENDFUNC
    PROCEDURE verein_init(ob#,name$,staerke&)                       !call
    RETURN
    PROCEDURE verein_exit(ob#)                                      !call
    RETURN
    PROCEDURE verein_free(ob#)                                      !call
    RETURN
    FUNCTION verein_name$(ob#)                                      !call
      '
      ' Ermittelt den Vereinsnamen.
      '
    ENDFUNC
    FUNCTION verein_spieler(ob#,spieler%)                           !call
      '
      ' Gibt den Spieler mit der Nummer spieler% aus der Aufstellung
      ' zurück (also dessen Objektkennung).
      '
    ENDFUNC

Mit einem Befehl kann nun ein kompletter Verein mit 11 Spielern angelegt werden:

    fch:
      DATA Franz
      DATA Bert,Hugo,Sascha
      DATA Markus,Frank,Theo,Daniel
      DATA Matthias,Andreas,Jürgen
      '
      RESTORE fch
      LET fch#=@verein("FC 08 Homburg",80)

Den Namen des Towarts vom FCH erhält man nun jederzeit durch den Aufruf:

      ' 0=Torwart .. 10=Mittelstürmer
      PRINT @fussballspieler_name$(@verein_spieler(fch#,0))

Sie sehen, daß sich die Benutzung sehr, sehr einfach gestaltet, was später beim Simulatorbau noch deutlicher werden wird. Die Mühen, die wir gleich einmalig in die Realisierung von Fußballspieler- und Vereinsobjekt stecken werden, holen wir dadurch leicht wieder heraus.

Wahl der konkreten Attribute