Bibliotheken - Object Konstruktor

Ein Konstruktor für eine Object-Bibliothek ist eine Methode die zum Erzeugen eines Objekts benötigt wird. Die Konstruktor-Methode wird vom Compiler aufgerufen, wenn ein Objekt erzeugt/initialisiert werden soll. Bei Objekt-Bibliotheken ist mindestens ein Konstruktor zum Erzeugen (Constructor) notwendig. Die Konstruktoren zur Zuweisung auf eine Objekt-Variable (ConstructorAssign) oder Kopie (ConstructorClone), sowie der Destruktor (Destructor) sind optional.

Wird eine Variable vom Typ der Objekt-Bibliothek dimensioniert, ist sie undefiniert (nil). Es handelt sich - wie bereits beschrieben - um einen Zeiger auf einen dynamischen Speicherblock (MemoryBlock). Sobald ein Objekt mit dem new-Operator erzeugt wurde, zeigt diese Variable auf den nun zugewiesenen Speicherblock.

Wieviel Speicher ein solches Objekt nach dem Erzeugen belegt, wird durch den Autor der Objekt-Bibliothek festgelegt.

Ein Konstruktor zum Erzeugen (new) muss daher enthalten:

  1. Freigabe eines Ggf. bereits zugewiesenen MemoryBlock.
  2. Erzeugen eines MemoryBlock mithilfe der Funktionen aus der Standardbibliothek in gewünschter Größe.
  3. Initialisieren des Speicherblocks mit den gewünschten Daten.
  4. Rückgabe der Adresse des neuen MemoryBlock oder nil bei einem Fehler.

Bei einer Objekt-Bibliothek gibt es drei verschiedene Arten von Konstruktoren, welche je nach Art der Verarbeitung aufgerufen werden (Erzeugen, Zuweisen, Kopieren).

  1. Constructor - Wird aufgerufen zum Erzeugen eines Objekts: new myobject(…). Das Erzeugte Objekt liegt dann temporär im Speicher und ist keiner Variablen zugewiesen. (mehr als ein Konstruktor erlaubt)
  2. ConstructorAssign - Wird aufgerufen bei einer Zuweisung: myobj1 = <Ausdruck>. Hiermit wird ein temporär erzeugtes Objekt einer Variablen zugewiesen.
  3. ConstructorClone - Wird aufgerufen wenn ein bestehendes Objekt instanziert (geklont/kopiert) werden soll: myobj1 = myobj2. Hierzu wird ein neues, temporäres Objekt erzeugt und die Daten aus dem Quellobjekt werden kopiert. Bei der Zuweisung von nil wird automatisch der Destructor aufgerufen.

Die Parameter die für einen Konstruktor definiert werden, steuern wie und welche Art von Eingabedaten zum Erzeugen eines Objekts möglich sind. Da mehrere Konstruktoren angelegt werden dürfen, können sich Diese auch unterscheiden.

Beispiel 1

Constructor()
dim var as myobj
var = new myobject()

Beispiel 2

Constructor(size as byte)
dim var as myobj
var = new myobject(123)
'following term selects and calls automatically the
'best-fit constructor with the value as parameter (like above):
var = 123