Thread Anfänger OO-Frage (17 answers)
Opened by Gast at 2008-07-23 14:13

LanX-
 2008-07-23 18:31
#112502 #112502
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
so schwer ist es nicht, diese Java Terminologie verwirrt nur, in Perl ist OOP quasi auf Packages aufbebockt, indem blessing und $obj->methode() aufrufsyntax hinzugefügt wurde.

Our beschreibt eine Packagevariable, die ist auch von außen erreichbar solange man das package mit angibt.

My beschreibt eine lexikalische Variable, die ist nie von außen erreichbar udn gilt nur im scope {block}, und der kann maximal das aktuelle File sein (was meistens auch dein Package ist)

Das gilt unabhängig von OOP!


Objektattribute kannst du nur über $self realisieren, jede "Methode" bekommt die Referenz des aufrufenden Objektes als ersten Parameter, sonst wüßte die Routine ja nicht mit welcher Instanz sie arbeitet.

Ein Objekt ist in Perl nur eine in new() geblesste (gesegnete) Datenstruktur, meistens ein Hash, deswegen kannst du über $self->{attribut} auf die Instanzvariablen zugreifen (auch von außen mit $obj->{self} !)

Das ist ansich sehr elegant gelöst und du hast definitiv mehr Freiheiten als in Java, was du aber mit geschwätzigeren und unübersichtlicheren Code erkaufst.

Ruby löst das eleganter und es gibt zahlreiche Module die das in Perl vereinfachen, z.B. CPAN:Moose

View full thread Anfänger OO-Frage