Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Tutorial

Type als Objekt - Das UDT-Tutorial Teil 1

von RedakteurMODSeite 3 von 8

Constructor/Destructor

BefehlsreferenzeintragConstructoren sind Funktionen, die aufgerufen werden, wenn ein Type erstellt wird, also z. B. bei Verwendung von BefehlsreferenzeintragDIM. BefehlsreferenzeintragDestructorEin Destructor ist eine Funktion, die aufgerufen wird, wenn der Type seinen BefehlsreferenzeintragScope 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 BefehlsreferenzeintragInteger BefehlsreferenzeintragPtr 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: BefehlsreferenzeintragConstructor 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.

 

Gehe zu Seite Gehe zu Seite  1  2  3  4  5  6  7  8  
Zusätzliche Informationen und Funktionen
  • Das Tutorial wurde am 06.09.2010 von RedakteurMOD angelegt.
  • Die aktuellste Version wurde am 05.09.2011 von AdministratorSebastian gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen