Thread OO-Vererbung für Plugins (49 answers)
Opened by marky at 2012-11-27 11:08

clms
 2012-11-27 15:50
#163665 #163665
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
Habe ich das richtig verstanden?:

Du hast ein Modul Module1.pm in dem die Klasse Module1 implementiert wird.

Und Du hast en Modul Module2.pm in dem die Klasse Module2 implementiert wird. Module2 erbt von Module1 in klassischer OO-Manier.

Jetzt willst Du Code schreiben, der mittels use Module1; Funktionen der Klasse Module1 nutzt. Wenn aber zusätzlich ein use Module2; im Code steht, sollen stattdessen die überladenen Funktionen der Klasse Module2 verwendet werden.

Stimmt das so?

Die Auswahl der richtigen Implementierung von SAVE() ist trivial, wenn Du die Funktion über ein Objekt aufrufst, das wahlweise vom Typ Module1 oder Module2 ist. Der genaue Typ wird dem Objekt beim Aufruf von bless übergeben.

Im einfachsten Fall hast Du also in Deinem Hauptprogramm
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
# Module laden
use Module1;  # optional bei "use Module2", da dieses ebenfalls Module1 laden sollte
use Module2;  # optional wenn nur Module1 genutzt werden soll

# Objekt anlegen
my $obj = new Module1; # bei Bedarf auf "new Module2 ändern

# Objekt nutzen
$obj->SAVE();


Jetzt erfüllt dieser Code die Anforderungen noch nicht ganz.
Insbesondere müsstest Du die Zeile mit dem new jeweils anpassen.
Wenn man das vermeiden will, müsste man bei der Erzeugung des Objekts etwas tricksen. Willst Du das?

View full thread OO-Vererbung für Plugins