Eigene Typen
In JayMo baut alles auf Objekten bzw. Objekt-Instanzen auf, welche dann verschiedene Funktionen, Eigenschaften und Events besitzen.
Definition
Genauer gesagt gibt es zuerst Typen, welche die Grundstruktur zur Verfügung stellen, von der dann Instanzen abgeleitet werden.
Als Beispiel definieren wir den Typ "Auto":
::Auto
Damit ist bereits der Typ "Auto" erstellt, wenn auch noch ohne jegliche Funktion.
Die Definition wird wieder mit zwei Doppelpunkten eingeleitet, gefolgt von einem Großbuchstaben und weiteren Buchstaben/Zahlen/Unterstrich.
Um eine Instanz vom Typ Auto abzuleiten, muss nur der Typ-Name ausgeschrieben werden:
Auto
Und schon haben wir eine Objekt-Instanz vom Typ "Auto" erstellt. Der Typ "Auto" erbt dabei automatisch vom Typ "Objekt", weshalb uns bereits ein paar Funktionen zur Verfügung stehen:
Auto.type.print
Haupt-Block
Jeder Typ besitzt einen Haupt-Block, der beim instanziieren abgearbeitet wird. Dies ist vergleichbar mit einem Konstruktor in z.B. Java.
::Auto
"Brumm".print
In diesem Fall wird bei jeder neuen Auto-Instanz "Brumm" ausgegeben.
In diesem Block können auch Variablen definiert werden, die dann innerhalb des gesamten Types verwendet werden können.
Funktionen
Im Haupt-Block können ebenso Funktionen definiert werden, mit denen das Objekt zum Leben erweckt wird.
Im vorherigen Kapitel wurden bereits Funktionen erstellt, welche sich dann im "Root"-Typ befanden. Für den eigenen Auto-Typ funktioniert dies genau so:
::Auto
"Brumm".print
::fahren
"Bwwww".print
::hupen
"Möööp".print
::bremsen
"Quiiitsch".print
Nun lässt sich von diesem Typ ein Auto ableiten, mit dem interagiert werden kann:
a = Auto
a.fahren
a.hupen
a.bremsen
Hier wird ein "Auto" erstellt und der Variable "a" zugewiesen. Anschließend werden die einzelnen Funktionen aufgerufen. Der Aufruf von ...
Auto.fahren
Auto.hupen
Auto.bremsen
... würde in jeder Zeile eine neue Auto-Instanz erzeugen. Somit existiert dann ein Auto zum Fahren, ein Auto zum Hupen und ein Auto zum Bremsen. 😂
Ebenso wird jedes Mal "Brumm" ausgegeben.