Thread Module
(28 answers)
Opened by Strazke at 2005-09-14 01:27
[quote=Strazke,13.09.2005, 23:27]Ok, hier verstehe ich nicht, wozu man überhaupt einen Konstruktor braucht. Ist es nicht viel einfacher, einfach eine Funktion zu schreiben, die das gewünschte zurüchgibt? Und mal sehen ob ich das richtig verstanden habe: Es wird ein Hash erstellt, das dann Tree zugeordnet wird(wieso das eigentlich?) und dann wird es zurückgegeben.
Stimmt das so weit?[/quote] man verwendet normalerweise einen konstruktor, um ein neues objekt zu erzeugen (ok, geht auch ohne, aber meistens ist es sauberer, einen zu benutzen). Als Basis fuer ein Objekt muss man eine Referenz verwenden (man verwendet dafuer meistens eine hashreferenz, und der Name $self hat sich in Perl eingebuergert. Diese Referenz wird erst durch bless($self, $type) zu einem Objekt (d.h. in Perl: zu einer Referenz, die weiss, in welche[s]n Namensraum[/s] Klasse sie gehoert). Das hat den Vorteil, dass man dann schreiben kann: $object->methode(...) und dann ueber das Objekt ermittelt werden kann, um was fuer eine subroutine es sich genau handelt. ok, man koennte zwar sowas auch manuell machen, indem man z.B. Class::methode($hashRef, ...) aufruft, aber das wird, wenn man vererbung benuetzt, um nicht jede funktionalitaet in jeder klasse nochmal coden zu muessen. Und der Weg des Methodenaufrufes macht das ganze einfacher zu handeln, weil man nur beim aufruf des konstruktors ueber den Namen der Klasse bescheid wissen muss, und sich dann um das dahinterliegende nicht mehr zu kuemmern braucht. Durch OOP ist es bei der DB-Programmierung viel einfacher, mehrere datenbankverbindungen gleichzeitig zu handeln, oder mehrere sql-abfragen zur gleichen zeit abzufeuern (z.B. man liest in einer hauptschleife irgendwelche daten aus, und bei jedem schleifendurchlauf (d.h. fuer jede zeile) fuehrt man fuer die gefundenen daten irgendwelche anderen statements aus). Sowas koennte man auch ohne OOP realisieren, aber die verwendung ist selten so komfortabel... Der Hauptvorteil von OOP ist, dass Daten und die Methoden, ueber die auf diese Daten zugegriffen wird, gemeinsam (in einer Klasse) gespeichert werden, und dass dem benutzer dieser Klasse idealerweise voellig verborgen bleibt, auf welcher datenstruktur diese Daten abgebildet sind. Wenn man die Funktionalitaet einer Klasse erweitern will, kann man einfach eine neue Klasse von dieser klasse ableiten, und man muss nur die Erweiterungen coden, nicht jedoch den gesammten rest. perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |