Lade...
 

Dynamische Datenfelder (Slots)

Dynamische Datenfelder

Dynamische Datenfelder (Slots) sind Datenmember, die dynamisch einem Objekt hinzugefügt werden. D.h. das Objekt wird um Datenfelder erweitert, die bei der Klassendefinition nicht vorgesehen wurden. Während alle Instanzen einer Klasse die gemeinsame Datenmember besitzen, trifft dies für Slots im Allgemeinen nicht zu.

Slots können in Objekten der Klassen CX_EXPANDABLE und CX_CONTAINER bzw. deren Ableitungen angelegt werden.

Die dem System bekannten (verwendbaren) Slots werden aus dem Initialisierungs-File CLASSIX.INI oder aus der Datenbank eingelesen oder aber mithilfe des Statements SystemObject::DefineSlot zur Laufzeit deklariert. Zur Definition eines Slots gehören dessen Name und sein Datentyp. Slots können auch Relationen zwischen Objekten beschreiben: In diesem Fall kann der Typ der zu referenzierenden Objekte angegeben (und damit eingeschränkt) werden.

Man kann Slots auch als eine Menge von Variablen sehen, bereitgestellt für die spätere Verwendung zur Laufzeit.
Dieser Variablenraum kann durch Spezifikatoren (Specifier) strukturiert werden. Ein Spezifikator ist einfach ein Name, der benutzt wird, um Bezeichnungen für neue dynamische Datenfelder zu generieren:
Die Bezeichner slot und specifier seien der Name eines dynamischen Datenfelds bzw. eines Spezifikators. Dann bezeichnen

      slot
      specifier.slot

zwei verschiedene dynamische Datenfelder (aber mit gleichem Datentyp). Mit Spezifikatoren kann die Anzahl der Slot-Definitionen (und damit die Größe des Dictionary) reduziert werden.

Ein Spezifikator kann im Sinne eines Template benutzt werden. Der Term

      tmp.slot

wird dann noch nicht als die endgültige Beschreibung des Datenfelds gesehen. Anweisung SetSpecifier ordnet dem Bezeichner tmp einen anderen Spezifikator s1 oder s2 ... oder sn zu. Damit besteht die Möglichkeit, InstantView®-Codeabschnitte und auch Formel-Objekte (siehe Klassen CX_FORMULA, CX_CONDITIONED_BAG) in Bezug auf dynamische Datenfelder zu parametrisieren.

Ein dynamisches Datenfeld wird einem Objekt automatisch beim Aufruf der Statements DrainWindow und Put hinzugefügt.

Sobald Objekte mit dynamischen Datenfeldern in einer Datenbank gespeichert sind, darf die Definition dieser Datenfelder nicht mehr verändert werden.
Mittels einer Cross-Referenz aller Slots kann man feststellen, in welchem Objekte welche Datenfelder vorkommen.

Anweisungen