Thread Perl OO und Vererbung
(10 answers)
Opened by mark05 at 2020-03-27 11:06 2020-03-30T07:27:16 mark05 Du exportierst das Unterprogramm out. Dadurch kannst Du in deinem Programm out($text) schreiben - und musst es nicht mit OOTest::Out::out($text) aufrufen. Das hat mit Objektorientierung nichts zu tun, eher im Gegenteil: OO-Methoden zu exportieren ist sinnlos. 2020-03-30T07:27:16 mark05 Dein Unterprogramm out hängt fest verdrahtet an dem Objekt $o, dass Du in Deinem Paket OOTest::Out definiert hast. Auf dieses Objekt hast Du von außen keinen Zugriff, deshalb kannst Du auch keine OO-Methoden drauf anwenden. Als Abhilfe könntest Du $o als Singleton-Objekt zugreifbar machen und eine Zugriffsfunktion für das Attribut schreiben: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 package OOTest::Out; # ... wie bisher sub instance { $o } sub set_debug { my $self = shift; my ($debug) = @_; $self->{ debug } = $debug; } Und im Hauptprogramm: Das ist dann zwar beinahe objektorientiert, aber keine Vererbung. 2020-03-30T07:27:16 mark05 Das ist schon ok, aber dann solltest Du Dich in jedem Fall mit den Grundlagen von OO beschäftigen. Wenn's mit Bezug zu Perl sein soll: perlootut und perlobj hatte ich ja schon mal empfohlen, auf https://learn.perl.org/books/ gibt's einige Buchtipps dazu. 2020-03-30T07:27:16 mark05 Dieser Verwendung der Begriffe wird sich kaum jemand anschließen. Vererbung mit Perl geschieht beispielsweise mit parent. Der Exporter exportiert Namen aus der Symboltabelle und hat mit Objektorientierung nichts am Hut. |