Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen.

Slides:



Advertisements
Ähnliche Präsentationen
C Sharp (C#) Martin Saternus Senior Student Partner
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Programmierung II Prof. Dr. Michael Löwe
Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Vererbung.
Ein Beispiel in Java.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Objektorientierte Programmierung
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Die Skriptsprache Perl (6) Wolfgang Friebel DESY Zeuthen.
Die Skriptsprache Perl (7)
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
C++ Vererbung und Polymorphie
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Vererbung
Einführung in die Programmierung Datensammlung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Klassendefinitionen in Java
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik 1 Letzte Übung.
1 Tagesüberblick 6 Lösung Hausaufgabe/Fragen Weitere besondere Variablen Hier-Dokument Unterprogramme.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
A Workshop About this chapter General description Units Time Schedule
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Objektorientierte Programmierung (OOP)
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
Tutorium Software-Engineering SS14 Florian Manghofer.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
C++ FÜR cOMPUTERSPIELENTWICKLER
Grundkurs Informatik 11-13
Implementieren von Klassen
 Präsentation transkript:

Die Skriptsprache Perl (8) Wolfgang Friebel DESY Zeuthen

Anmerkungen zu Teil 7 perl -I fügt an das an, am Anfang zu erweitern, wird {BEGIN..} benutzt n Ein Modul wird mit h2xs -X -n name erzeugt u statt test.pl Subdirectory t mit Testscripten benutzen u Scripte müssen *.t genannt werden u MANIFEST anpassen und perl Makefile.pl ausführen

Wiederholung zu Teil 7 n Klasse: Mit package definierter Namensraum n Objekt: Speicherbereich, auf den ein Pointer zeigt u Pointer nicht vom Typ ref sondern vom Typ Class mit bless erreicht ( $obj={};bless $obj,Class; ) n Methode: Subroutine, die über Objekt gerufen wird u $obj->method($arg); damit wird Class als erstes Argument übergeben Subroutine wird in package Class gesucht

4. Vererbung n Vererbung in Perl ist Vererbung von Methoden Vererbung wird duch das enthält Klassennamen, von denen geerbt wird package Printer;#aktuelles Package is a Net::Node Mehrfachvererbung: mehrere n Vererbung ist rekursiv, d.h. kann mehrstufig sein

Vererbungshierarchie n Vererbung dient zum Auffinden von Methoden u Wenn Methode nicht in aktueller Klasse dann Suche nach Methoden zuerst in $ISA[0] dann Suche in Eltern von $ISA[0] dann erst Suche in weiteren Elementen dann Suche in Klasse UNIVERSAL dann Suche nach Methode AUTOLOAD in Klasse dann Suche nach Methode AUTOLOAD in Eltern u sonst Fehler

Vererbungshierarchie (2) Vererbung ist Suche nach Methode SA u Suche zuerst nach oben im Vererbungbaum Danach Suche von links nach rechts Alle Methoden erben von UNIVER SA L Wird Methode nicht gefunden, wird nach gleichen Regeln nach Methode AUTOLOAD gesucht

Die Klasse SUPER n SUPER ist ein Pseudo-Package n Idee: Methode in übergeordneter Klasse erledigt Teilaufgabe (Delegation), Rest in aktueller Methode n SUPER::test sucht in Eltern der aktuellen Klasse u gesamte Vererbungshierarchie wird durchsucht u erste gefundene Methode test wird verwendet

Die Methode AUTOLOAD AUTOLOAD wird gerufen, falls Methode nicht existiert In $AUTOLOAD steht Name der fehlenden Methode $AUTOLOAD ist Variable des aktuellen Packages AUTOLOAD erhält wie üblich Klasse übergeben n Damit vor allem viele get/set Methoden realisierbar n Nachteil: es wird jedesmal nach Methode gesucht n AUTOLOAD für jede undefinierte Methode gerufen

Optimiertes AUTOLOAD AUTOLOAD generiert Methode bei Bedarf u siehe Beispiel in Object Oriented Perl S.94/95 n Zuweisung einer Subroutinendefinition zur Funktion, deren Name in $AUTOLOAD steht n Lösung mit Typeglob Operator *{$AUTOLOAD} = sub {return $_[0]->{$attr}}; n Nur erster Aufruf nutzt AUTOLOAD

Automatische Methodenerzeugung n Klassen bestehen in einfachen Fällen aus Konstruktor und set/get Methoden für Attribute n Aussehen der Methoden gleicht sich n Erzeugung der Methoden nach Muster ist möglich n Mehrere Module in Standard Perl und CPAN n Class::Struct in Standard Perl n Class::MethodMaker auf CPAN (hier nicht installiert)

Class::Struct n Generiert Perl Code für new und Accessoren Stellt Subroutine struct bereit n Einfachste Benutzung mit use Class::Struct; struct Test => { name => $, feld }; n Nachteil: nicht für komplexe Aufgaben geeignet

Hausaufgaben n Benutze die Klasse Super zur Erweiterung des Konstruktors new (Initialisierung von Variablen in übergeordnetem new) n Erweitere das AUTOLOAD Beispiel um eigene Routinen Warum wird im Beispie Test::DESTROY gerufen n Definiere eine eigene Methode per Typeglob n Mache Dich mit dem Modul Class::Struct vertraut