Es ist auch möglich, Hollywood für objektorientierte Programmierung
zu nutzen. Hollywood hat nicht das Konzept der Klassen, aber
Sie können das Verhalten mit Hilfe von Tabellen und Metatabellen
leicht emulieren. Eine für die objektorientierte Programmierung
wichtig Sache ist, dass Objektfunktionen üblicherweise einen
Handler auf sich selbst als den ersten Parameter erhalten.
Dieser Parameter wird in der Regel self
(selbst) oder this
(diese)
genannt. Natürlich könnten Sie diesen Parameter in Ihrer Funktion
emulieren, indem Sie einfach einen Parameter mit dem Namen
self
oder this
deklarieren. Aber Sie können auch eine spezielle
Syntax für die objektorientierte Programmierung gebrauchen,
die Hollywood zur Verfügung stellt.
Wenn Sie Ihre Funktionen mit dem Operator Doppelpunkt erstellen,
wird Hollywood automatisch einen versteckten self
-Parameter
für Sie initialisieren. Sie müssen ihn nicht ausdrücklich erstellen.
Wenn Sie die Doppelpunkt-Syntax verwenden, ist er immer da.
Funktionen, die mit der Doppelpunkt-Syntax deklariert werden,
werden Methoden genannt, weil sie von einem Wurzelobjekt abhängig
sind.
Hier ist ein einfaches Beispiel für ein Verfahren in Hollywood:
cart = {items = {}, numitems = 0} Function cart:AddItem(n$, p) self.items[self.numitems] = {name = n$, price = p} self.numitems = self.numitems + 1 EndFunction Function cart:RemoveItem(n$) For Local k = 0 To self.numitems - 1 If self.items[k].name = n$ RemoveItem(self.items, k) self.numitems = self.numitems - 1 Return EndIf Next EndFunction Function cart:CheckOut() Local total = 0 For Local k = 0 To self.numitems - 1 NPrint(self.items[k].name, self.items[k].price) total = total + self.items[k].price Next NPrint("Your total is", total) EndFunction cart:AddItem("DVD", 10) cart:AddItem("Blizzard PPC", 1000) cart:AddItem("AAA Chipset", 100000) cart:AddItem("68070", 500) cart:CheckOut() cart:RemoveItem("Blizzard PPC") cart:CheckOut() |
Der obige Code erstellt eine einfache Klasse, die einen Einkaufswagen
darstellt. Die Klasse hat drei Methoden: Artikel hinzufügen,
Artikel entfernen und Check-Out. Darüber hinaus hat sie zwei
Eigenschaften: Eine Tabelle enthält eine Liste aller Elemente
im Einkaufswagen und ein Zählwert, der die Anzahl Elemente
im Wagen zählt. Sie können sehen, dass jeder der drei Methoden
mit einer self
Variable arbeitet, die nicht deklariert wurde.
Dies liegt daran, dass alle Methoden mit dem Doppelpunkt-Operator
erstellt wurden und damit Hollywood automatisch den self
-Parameter
hinzugefügt hat.
Natürlich gibt es viel mehr in der objektorientierten Programmierung, als in diesem kurzen Ausflug abgedeckt wurde. Sie in die Tiefen der OOP (Vererbung, Mehrfachvererbung, Datenschutz, etc.) einzuführen, würde den Rahmen von diesem Leitfaden sprengen. Aber Sie wissen nun, dass das alles mit Hollywood- und Metatabellen möglich ist. Wenn Ihnen dieses Thema interessiert und Sie mehr lernen wollen, sollten Sie ein Buch über die Lua-Programmierung konsultieren, weil Hollywood einen Lua-Kernel verwendet. Zum Beispiel hat das Buch "Programming in Lua (zweite Auflage)" von Roberto Ierusalimschy ein umfangreiches Kapitel über OOP in Lua, die Sie in der Regel direkt an den Hollywood-Code anpassen können.