Namensraum ========== - Beginn definiert durch Pragma: package, bis zur nächsten package - Anweisung z.B. package Namensraum1 ; - Verwendung / Einbindung durch pragma: use z.B. use Namensraum1 ; - mit Token __PACKAGE__ feststellen, in welchem Namensraum man sich befindet. z.B. print "Das ist Namensraum " . __PACKAGE__ . "\n" ; - Standard-Namensraum ist main. - Mit Modul Exporter können ganze Gruppen von Funktionen von einem Namensraum in einen anderen importiert werden. Module ====== werden gesucht in Pfaden, die in @INC enthalten sind. Erweitern um weitere Pfade mittels: "use lib 'Meine/Module';" Oder Aufruf von Perl mit Schalter -I: -I "Meine/Module" require: meldet Fehler zur Laufzeit. use: meldet Fehler zur Kompilierzeit. Perl Modul Installationsshell ============================= perl -MCPAN -e shell Perl-Objekte ============ Objekte (= Instanzen einer Klasse) dargestellt als Referenz auf irgendwelche Daten, eine Referenz mit Bezug auf einen Namensraum (= Paketzugehörigkeit) (mittels bless absegnen, bless gibt einer Referenz eine beliebige Paketzugehörigkeit mit). Perl-Klasse soll ein Objekt beschreiben mit seinen relevanten Eigenschaften und Fähigkeiten. Modul, das wenigstens eine Funktion enthält, die solche abgesegneten Referenzen erzeugt (fast immer Hash). Die Eigenschaften werden als Name-Wert-Paare in dem Hash gespeichert. Die Fähigkeiten werden als Funktionen implementiert, deren erster Param immer ein solches Objekt ist und die wir dann Methoden nennen. Methoden (= Instanzmethoden) Funktionen in Klassen, haben als ersten Param ein Objekt. Perl kennt Klassenmethoden (erwartet string) und Objektmethoden (erwartet Referenz), werden durch die Art der Verwendung bestimmt. Instanzdaten (= Objektattribute, Member) Datenbestandteil, zum Objekt gehörige Datenfelder (Bsp. s. Kochbuch 13.3) Klassendaten (= Klassenattribute, statische Daten) gemeinsame Daten aller Mitgliedern einer Klasse (Bsp. s. Kochbuch 13.4) Basisklasse (= generische Klasse, Superklasse) ein übergeordneter Parent einer Vererbungshierarchie abgeleitete Klasse (= spezifische Klasse, Subklasse) untergeordnetes Child in der Objekthierarchie Konstruktoren Methoden, die Objekte erzeugen (new ... ), d.h. Rückgabewert muss eine Objekt-Referenz sein, übelicherweise: new. z.B. (a) my $w = new Wuerfel(6); oder (b) my $w = Wuerfel::new('Wuerfel',6); (a) wird automatisch von Perl in (b) umgewandelt: Paket-Name vor die Funktion sowie erster Param = Name der Klasse als String. Innerhalb von new wird Objekt "self" (in C/JAVA "this") genannt. Typ ist beliebige Referenz, meist auf Hash. Schlüssel ist Name der Eigenschaft, die das Objekt haben soll. Mit bless wird Objekt der Klasse (Paketzugehörigkeit) zugeordnet. Speicherverwaltung für Objekt erfolgt automatisch. Methoden (Fortsetzung) Funktionen in Klassen z.B. (a) $w->wuerfeln(); (b) Wuerfel<::wuerfeln($w); (a) wird automatisch von Perl in (b) umgewandelt: erster Param der Methode = Objekt. Vererbung soll eine Beziehung zwischen 2 Klassen darstellen, die auch eine logische Verwandtschaft haben. Es soll das Substitutionsprinzip gelten (wo ein Objekt der Basisklasse steht, soll auch ein Objekt der abgeleiteten Klasse stehen dürfen; "ist ein"-Beziehung ("is a")). d.h. z.B. bei überschriebenen Methoden gleiche Params + Rückgaben mit gleicher Bedeutung verwenden. Eigenschaften