Tutorial
Type als Objekt - Das UDT-Tutorial Teil 1
von MOD | Seite 3 von 8 |
Constructor/Destructor
Constructoren sind Funktionen, die aufgerufen werden, wenn ein Type erstellt wird, also z. B. bei Verwendung von DIM. DestructorEin Destructor ist eine Funktion, die aufgerufen wird, wenn der Type seinen Scope verlässt und der Type verstört wird. Das könnte passieren, wenn das Programm beispielsweise endet (für einen Type im Hauptprogramm), oder wenn eine Funktion beendet wird (bei einem lokalen Type, welches innerhalb einer Funktion deklariert wurde). Das folgende Beispiel erweitert unseren Code um diese Funktionen:
Type bar
Declare Constructor()
Declare Destructor()
Declare Property x() As Integer
Declare Property x(ByVal n As Integer)
p_x As Integer Ptr
End Type
Constructor bar()
Print "Constructor bar()"
p_x = Allocate(SizeOf(Integer))
*p_x = 10
End Constructor
Destructor bar()
Print "Destructor bar()"
DeAllocate(p_x)
End Destructor
Property bar.x() As Integer
Print "bar.x()"
Property = *p_x
End Property
Property bar.x(ByVal n As Integer)
Print "bar.x(ByVal n As Integer)"
*p_x = n
End Property
'---
Dim foo As bar
Print foo.x
foo.x = 5
Print foo.x
Wieder sieht die Syntax fast wie bei einer normalen Funktionen aus. Beachte, dass hier p_x zu einem Integer Ptr geändert wurde. Der Constructor reserviert den Speicher für p_x, wenn also eine Variable vom Typ 'bar' erzeugt wird, sichert der Constructor uns den nötigen Speicher. Der Destructor hingegen gibt den gesicherten Speicher wieder frei, sobald der Type seinen Scope verlässt. So können Constructoren und Destructoren verwendet werden, um Startwerte festzulegen, Speicher zu sichern und weiteres und am Ende alles wieder zu beseitigen.
Ein Constructor kann auch Übergabeparameter haben, wie eine Funktion. Der Sinn dahinter ist, dass man einer Variable eines Types schon bei der Deklaration einen Wert zuweisen kann, wie z.B.: 'Dim foo As bar = 5'. Sofern man einen Constructor mit Parametern definiert, sollte man auch immer einen ohne definieren. Näheres dazu im Referenzartikel: Constructor oder weiter unten in diesem Tutorial.
Hier ist es wieder nur ein sehr einfaches Beispiel, doch wer etwas damit rumspielt wird merken, dass diese besonderen Funktionen sehr praktisch sein können.
Es ist wieder ein einfaches Beispiel, aber z.B. bei irgendeiner Liste, kann die Liste erstellt werden und auch wieder gelöscht werden bei Ende.
Da kann ganz schön praktisch sein.
Zusätzliche Informationen und Funktionen |
- Das Tutorial wurde am 06.09.2010 von MOD angelegt.
- Die aktuellste Version wurde am 05.09.2011 von Sebastian gespeichert.
|
|