Basic-AutoIt-Object -- Objekte sind auch nur Arrays ;)

  • Hi,
    nachdem ich mich in Lua etwas mehr mit Objekten beschäftigt habe, ist mir erst mal aufgefallen, dass es zur Objektarbeit gar keiner Objekte bedarf. ;)
    Lua bildet alle Objekte als Arrays ab.
    Was in Lua geht, müßte man doch auch in AutoIt schaffen. Ein Wermutstropfen ist natürlich die Notation. Nur mit den reinen AutoIt-Funktionen kann ich auf meine Methoden und Eigenschaften nicht objektüblich mit Objekt.property zugreifen.
    Das hier vorgestellte ist wirklich nur ein Basis-Modell zur Objekt-Orientierten-Programmierung. Aber für einen Tag Arbeit ist es doch schon recht gelungen.
    Ich stelle zum Einen das Entwicklungsskript ein, da könnt ihr jeden Schritt nachvollziehen.
    Zum Anderen hänge ich die (inzwischen noch etwas überarbeiteten) Funktionen aus dem Entwicklungsskript als UDF + Bsp-Skript an.


    Das Skript ist bis jetzt eigentlich mehr eine Spielerei und kann keinesfalls gegen AutoItObject anstinken (das habe ich auch gar nicht vor).
    Ich wollte mich etwas mehr mit Objekten beschäftigen und habe eine Möglichkeit gesucht diese halbwegs komfortabel über Arrays abzubilden. Wobei mir die Vererbung wichtig war - und das funktioniert.
    Vielleicht findet auch jemand Gefallen daran und möchte es weiterentwickeln, Möglichkeiten gibt es da noch einige. ;)


    Also dann Viel Spaß damit.





    Edit 23.04.2012
    - In der UDF waren ein paar kleine Bugs - gefixed, aktuell: v0.2
    - Beispieldatei erweitert um das Thema Überladen

  • Ich denke vor allem zum Verständnis wie Objekte intern auch von anderen Programmiersprachen behandelt werden können trägt dies sehr gut bei. :)
    Wenn du mit der Syntax noch unzufrieden bist kannst du alternativ auch mal den Weg von Python anschauen.
    Dort sind Objekte prinzipiell Dictionaries.
    Wenn man nun das uns bekannte Scripting.Dictionary-Objekt für deine Herangehensweise verwendet könnte man die Syntax sicherlich etwas anders gestalten.

  • - Bugs gefixed
    - Bsp. erweitert um "Überladen"
    akt. Version: v0.2


    AspirinJunkie
    Mit Scripting.Dictionary ist auch ein guter Gedanke. Ich versuche erst mal rein Array-basierend voranzukommen. Aber ich werde es nicht aus dem Auge verlieren, zumal das Auslesen von Objekt im Objekt wesentlich einfach zu handhaben ist als Array im Array.