Type-Definition

Bearbeiten

Das am meisten bei BlitzMax genutzte Objekt ist eine "Klasse", die mit dem Keyword Type definiert wird.. Hinter Type folgt ein Name der Type-Definition, der es ermöglicht, verschiedene Types voneinander zu unterscheiden. Das Ende einer Type-Definition wird duch das Keyword EndType gekennzeichnet.

Type
EndType

Zwischen Type und EndType werden werden Eigenschaften mit dem Keyword Field angelegt, denen wie bei Variablen nach dem Doppelpunkt-Operator der Datentyp angehangt wird. Field-Eigenschaften sind also Variablen, deren Gültigkeit auf den Bereich vor Type bis EndType begrenzt ist.

Type Person
    Field Vorname:String
    Field Nachname:String
    Field Geburtstag:String
EndType

Dieses Type ist ein benutzerdefinierter Datentyp, der aber genau so wie ein Datentyp aus BlitzMax verwendet werden kann. Eine Variable wird in BlitzMax in folgender Form erstellt:

Gültigkeitsbereich Identifer:Datentyp

Da man mit Type einen Datentyp erstellt, kann man zu diesem Datentyp auch Variablen definieren:

Local Test:Person

Der Identifer "Test" wird dadurch innerhalb des Gültigkeitsbereichs unlösbar mit dem Type "Person" verbunden und man kann deshalb im weiteren Programmverlauf "Test" ohne Angabe des Typenamens verwenden. Eine so definierte Variable hat zunächst jedoch noch keinen Wert, sondern nur ihren Defaultwert. Dieser Defaultwert ist bei Type-Objekten der Operator Null (nicht 0, denn die Ziffer 0 ist der Defaultwert von Integerzahlen, der Operator Null ist der Defaultwert von Type-Objekten)

Ein Type stellt man sich am besten als einen Bauplan vor, in dem beschrieben wird welche Eigenschaften ein Objekt hat. Jedoch nur mit dem Bauplan kann man noch nicht viel anfangen. Es müssen erst nach dem Bauplan Objekte erstellt werden, die man als "Instanzen" bezeichnet. Der Operator New gefolgt von einem Typenamen gibt eine Instanz einer Typedefinition zurück:

Local Test:Person=New Person

. (Punkt)

Bearbeiten

Um zu unterscheiden, welche Eigenschaft der Instanz angesprochen wird, kann man hinter dem Identifer der Variablen den Namen der Eigenschaft nach einem Punkt angeben. Der Punkt ist auch ein Operator, der die Type-Variable mit der Eigenschaft verbindet:

Test.Vorname = "Max"
Test.Nachname = "Mustermann"

Type verschachteln

Bearbeiten

Da Type eine Definition ist, kann man Types nich wie Blockanweisungen verschachteln. Aber weil eine Field-Eigenschaft auch eine Variable ist, kann man ein Field auch mit dem Datentyp eines anderen Type definieren

Type Person
    Field Vorname:String
    Field Nachname:String
    Field Geburtstag:Datum
EndType
Type Datum 
    Field Tag:Byte
    Field Monat:Byte
    Field Jahr:Short
EndType