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

haj
 2020-03-27 19:04
#191658 #191658
User since
2015-01-07
558 Artikel
BenutzerIn

user image
2020-03-27T15:11:03 mark05
also wenn ich PerlCritic richtig verstanden habe wird die Methode "out" ...

Da hast Du dann etwas nicht ganz richtig verstanden: out ist keine Methode. Eine Methode hat immer als ersten Parameter das Objekt, auf das sie anzuwenden ist. In Perl schreibt man das dann $o->out und die Methode sammelt dann den ersten Parameter ein, per Konvention unter dem Namen $self. Klassenmethoden wie OOTest::Out->new(); wirken nicht auf ein einzelnes Objekt, aber auch hier wird der Klassenname als erster Parameter ($class in Deinem Beispiel) eingesammelt.
Die Syntax mit -> ist genau das, was einen normalen Aufruf eines Unterprogramms von einer Methode unterscheidet!

2020-03-27T15:11:03 mark05
Moose möchte ich nicht verwenden um meine Apps so zu schreiben ,
so das sich zusätzliche modul installationen auf einen minimum beschränken.

Das ist akzeptabel, macht aber das Lernen von OO schwieriger :) Perl ohne die inzwischen gar nicht mehr so neuen OO-Frameworks bietet nur rustikales OO im Stil eines IKEA-Bausatzes an.

2020-03-27T15:11:03 mark05
$o->{'debug'} = '1' ist aus dem beispiel das was ich ja nicht will.

Dann musst Du auch eine Zugriffsfunktion für das Objektattribut debug bereitstellen! Das ist eins der Features, das Dir Moose automagisch bietet.

2020-03-27T15:11:03 mark05
Frage : wie steht es den mittlerweile um die Performance von Moose ?

Das halte ich für völlig unproblematisch. Ich schreibe auch "kleine" CLI-Apps mit Moose (und CPAN:MooseX::App::Cmd), weil mir die Performance "Wann ist das Programm fertig entwickelt" viel wichtiger ist.

Bei Servern oder sonstigen Langläufern ist das eh unbedeutend, weil die Performance-Einbussen nur die Übersetzungsphase betriffen. Ein "klassisches" CGI-Skript, das bei jedem Aufruf neu übersetzt wird, würde ich nicht mit Moose schreiben - bei einem persistenten Server ist das schon wieder egal.

Ansonsten gibt es auch noch CPAN:Moo - das übersetzt viel schneller und beherrscht auch die wichtigen OO-Features. Mit Moose kann man auch zur Laufzeit noch in die Objekte reinschauen und ihre Eigenschaften verändern, damit kann man also noch einige OO-Tricks veranschaulichen.

Perldoc:perlootut und Perldoc:perlobj helfen bestimmt besser als PerlCritic, um sich mit traditionellem OO in Perl vertraut zu machen!

View full thread Perl OO und Vererbung