Thread eine Frage zu objektorientertem Perl (149 answers)
Opened by ASDS at 2007-04-10 15:14

Ronnie
 2007-04-17 21:41
#75889 #75889
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo ASDS,

dein Problem ist, dass dir einfach notwendige Grundkenntnisse über Objektorientierung fehlen. Es ist schwierig diese Infos in wenige Worte zu fassen. Ein Buch ist sicher sehr sinnvoll. Objektorientierung setzt eine andere Denkweise voraus, als klassische prozedurale Programmierung. Man kann sagen das ein Objekt ein eigener Typ ist. In einer schwachtypisierten Sprache wie Perl spielt das aber keine große Rolle. Eine Klasse beschreibt eine Art Schablone für Objekte. Ein Kerngedanke der Objektorientierung ist die Verbindung von Instanz und Methode. Eine Methode, spezieller eine Instanzmethode, unterscheidet sich von einer Funktion dadurch, das sie auf die Attribute des Objektes Zugriff hat. Eine Klassenmethode verändert Klassenattribute, die dann sämtliche Instanzen (Objekte) der Klasse betreffen. Beispiel für ein Klassenattribut könnte eine Variable sein, die die Anzahl erstellter Objekte zählt. Die Inkrementierung würde über den Konstruktor new mit realisiert werden. Dieser ist quasi ein Sonderfall einer Klassenmethode.

In deinem Quellcode setzt du eine Klasse für die Bäume ein, versuchst diese dann aber auf "klassische" Datentypen wie den Hash abzubilden. Jeder Knoten des Baumes ist aber ebenfalls ein Baum - wenn auch evtl. nur ein ganz kleiner. Deshalb ist es sinnvoll mit den Knoten als Objekten zu arbeiten. Jedes Objekt muss dann nur wissen, wie es auf seinen linken oder echten Ast zugreift, wobei die Methode schauen muss, ob der Ast mit einem weiteren Knoten verbunden ist, oder ein Wert repräsentiert.

Hier ist Rekursion der richtige Weg. Jedes Objekt kann das nächste bitten eine Methoden auf übergebene Werte anzuwenden. Evtl. helfen dir diese nicht direkt auf deinen Quellcode bezogenen Infos weiter. OOP ist etwas in das man sich schrittweise eindenken muss. Hat auch bei mir etwas länger gedauert, lohnt sich aber durchaus. Und es gibt immer noch neues zu entdecken.

View full thread eine Frage zu objektorientertem Perl