4.2 Erzeugen von Instanzen mit dem new-Handler

Bevor auf Objektmethoden und Objekteigenschaften zugegriffen werden kann, muss zuerst aus einem übergeordneten Skript (parent script) ein untergeordnetes Objekt (child object) erzeugt werden, also eine Instanz. Dies geschieht mit dem Lingo-Befehl new. Dazu ist es nötig, im Scriptfenster ein neues Skript zu erzeugen. Jedes Parent-Skript muss in einem eigenen Skriptdarsteller stehen!

Bei den Skript-Eigenschaften wird angegeben, dass es sich um ein übergeordnetes Skript bzw. parent script handelt. Außerdem ist es ratsam, dem Skript einen Namen zu geben.

Geben Sie im Skriptfenster folgenden Text ein:

on new me
return me
end new

Das ist die einfachste Implementierung eines Parent-Skripts überhaupt. Mit dem Befehl new wird eine Instanz des Objektes erzeugt. Der Aufruf sieht folgendermaßen aus:

Variable = script("Skriptname").new()

In unserem Beispiel:

objekt1 = script("MeinObjekt").new()

Welche Bedeutung hat der Parameter me? Wie vorher schon erläutert wurde, werden Objekte über eine Referenz angesprochen. Diese Referenz ist immer der erste Parameter eines Methodenaufrufs. Wichtig ist, dass der new-Handler diese Referenz zurückgibt und sie, wie in unserem Beispiel geschehen, einer Variablen zugewiesen wird. Ob der Parameter nun me oder anders heißt, ist im Grunde egal. Diese Bezeichnung ist jedoch üblich und stellt sogar ein Lingo-Codewort dar.


Wichtig
Der new-Handler erzeugt eine neue Objektinstanz und muss eine Referenz auf diese Instanz zurückgeben. Nur über diese Referenz kann das Objekt angesprochen werden!


In Java ist die Angabe eines Parameters für die Objektreferenz nicht nötig. Sie wird implizit der Eigenschaft this zugeordnet.

Wenn wir den Wert der Referenzvariable mit

put objekt1

im Nachrichtenfenster ausgeben, erhalten wir einige Informationen über das referenzierte Objekt.

Folgende Informationen lassen sich ablesen:

Der Name des Parent-Skripts ist MeinObjekt. Damit lässt sich zurückverfolgen, von welchem Skript dieses Objekt abstammt, solange man nicht in einen anderen Director-Film wechselt.

Es sind 2 Referenzen gespeichert, die auf dieses Objekt verweisen, nämlich eine Director-interne und eine in der Variablen objekt1. Wird dasselbe Objekt einer weiteren Variable zugeordnet, steigt dieser Wert jeweils um den Wert 1 an. Auf die Bedeutung dieses Werts wird im Unterkapitel "Die Speicherverwaltung in Lingo" eingegangen.

An der Speicheradresse eines Objektes lässt sich ablesen, ob es mit einem anderen identisch sind. Haben zwei Objekte die gleiche Speicheradresse, handelt es sich um ein und dasselbe Objekt.

Diese Informationen dienen vor allem der Fehlersuche während des Debuggings. Normalerweise werden sie im Programmablauf nicht benötigt; es ist auch nicht möglich, diese Angaben direkt zu ändern oder ein neues Objekt mit ihnen zu generieren.

Die Angabe des new-Handlers für ein Parent-Skript ist optional. Solange seine einzige Aufgabe darin besteht, die Objektreferenz zurückzugeben, kann sie auch weggelassen werden. Das wird jedoch im praktischen Einsatz selten der Fall sein, da im new-Handler meist einige Eigenschaften des Objektes initialisiert werden sollen.

4.1 Terminologien 4.3 Methoden definineren