Topic : Das ATOS-Magazin 3/99
Author : Das ATOS-Team
Version : 12.11.1999
Subject : ATOS Diskettenmagazine
Nodes : 214
Index Size : 7926
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default :
@help : ATOS Hilfe
@options : -i -s -h+zz -t2
@width : 70
View Ref-FileATOS ProgrammierpraxisModerne ZeitenKonstruktor und Destruktor Das ATOS-Magazin 3/99Was abschließend zur Schnittstellendefinition noch fehlt, ist die
Beschreibung der Parameter beim Anlegen und Freigeben eines Objektes.
Beim Freigeben parametrisiert man üblicherweise aber eigentlich nicht
mehr. Denkbar wäre zwar vielleicht, verschiedene Freigabemodi
anzubieten (etwa "schnell", "speichersparend" o.ä.), in der Praxis
kommt so etwas aber fast nie vor.
Beim Anlegen hingegen bietet es sich an, dem Konstruktor bereits erste
Informationen über das gewünschte Objekt mit auf den Weg zu geben:
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
Zunächst wird hier vorausgesetzt, daß die symbolischen Konstanten für
den Wert von position& anfangs korrekt gesetzt wurden:
LET fussballspieler_position_tor_&=0
LET fussballspieler_position_abwehr_&=1
LET fussballspieler_position_mitte_&=2
LET fussballspieler_position_sturm_&=3
Dies werden wir aber noch an der geeigneten Stelle nachholen.
Auffallend ist nun, daß der Konstruktor aus zwei Prozeduren besteht.
Die Bedeutung der zweiten Prozedur "init" wird später noch erläutert
werden.
Die Spezifikation des Destruktors gestaltet sich aufgrund der
fehlenden Parameter einfach:
PROCEDURE fussballspieler_exit(ob#) !call
RETURN
PROCEDURE fussballspieler_free(ob#) !call
'
' Diese Prozedur entfernt ein Objekt des Typs fussballspieler aus
' dem Speicher.
'
RETURN
Auch hier gibt es eine zweite Prozedur "exit", deren Bedeutung später
klar werden wird.
Die fertige Spezifikation im Überblick