12.9 Methoden

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.


Navigation zeigen