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: ![]() ![]() 2020-03-30T07:27:16 mark05 Dieser Verwendung der Begriffe wird sich kaum jemand anschließen. Vererbung mit Perl geschieht beispielsweise mit ![]() ![]() |