•  Back 
  •  Moderne Zeiten 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  ATOS Hilfe 
  •  Show info about hypertext 
  •  View a new file 
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-File      ATOS Programmierpraxis
         Moderne Zeiten

Konstruktor und Destruktor                       Das ATOS-Magazin 3/99

Was 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