Thread Perl OO und Vererbung (10 answers)
Opened by mark05 at 2020-03-27 11:06

haj
 2020-03-27 12:53
#191655 #191655
User since
2015-01-07
528 Artikel
BenutzerIn

user image
Um zu den Bemerkungen noch eins draufzusetzen: Du hast ein Objekt $o in Deinem Modul. In OO-Sprache ist das ein "Singleton". Deine subs setopt und out wirken nur auf dieses eine Objekt. Du könntest also setopt ebenso exportieren wie out, dann kannst Du es auch ohne davorgesetzes OOTest::Out:: aufrufen.

Aber, wie schon von hlubenow und Linuxer geschrieben, das ist nicht das, was man als Vererbung bei OO bezeichnet.

Ein paar Kleinigkeiten noch:
  • Vor smartmatch wird gewarnt. Du verwendest es ja eh nicht.
  • Von use Exporter und require Exporter brauchst Du höchstens eins - in Deinem Beispiel sogar gar keins, weil Du import gar nicht nutzt. Denn use base qw(Exporter); erledigt das Laden von Exporter.pm für Dich.
  • Die Zeile $o->{'debug'} = '1' ; ist auch nicht das, was man als Objektorientierung bezeichnet: Du greifst hier direkt in die Implementierung des Objekts rein, das gilt als unfein.

Wenn Du anno 2020 neue OO-Module schreibst, dann empfehle ich CPAN:Moose. Das nimmt einem viele einfache Aufgaben ab, und für alle komplizierten gibt's entsprechende Mittel.

View full thread Perl OO und Vererbung