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.