Thread Perl OO und Vererbung
(10 answers)
Opened by mark05 at 2020-03-27 11:06 2020-03-27T15:11:03 mark05 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 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 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 Das halte ich für völlig unproblematisch. Ich schreibe auch "kleine" CLI-Apps mit Moose (und 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 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. perlootut und perlobj helfen bestimmt besser als PerlCritic, um sich mit traditionellem OO in Perl vertraut zu machen! |