Objektorientierung in Perl Objektorientierung in Perl

Document Sample
Objektorientierung in Perl Objektorientierung in Perl Powered By Docstoc
					                                                                                              Übersicht
        Objektorientierung in
                Perl
                                                                                          Objektorientierung
                                                                                                 Warum?
                                                                                                  Syntax
          Autor: Peter Tauter                                                                  Perl vs. C++
                                                                                                 Beispiel




                      Objektorientierung                                             Objektorientierung
                                                                                  Was bedeutet Objektorientierung?

Objektorientierung                                                        • Das
                                                               Objektorientierungkann   man nicht in einer Stunde erklären
    Warum?                                                             •
                                                                   Warum?setzt    Grundsätzliche Abstrahierung voraus
     Syntax                                                              •
                                                                    Syntax Begriffe:

  Perl vs. C++                                                   Perl vs. C++      Klassen, Instanzen
     Beispiel                                                      Beispiel        Klassen/Instanzvariablen
                                                                                   Methoden
                                                                                   Vererbung




                      Objektorientierung                                             Objektorientierung
                                   Klasse                                                         Instanz
           • Verbindung zwischen Datentyp und zugehörigen
Objektorientierung                                                        • Ein
                                                               Objektorientierung von einer Klasse erzeugtes Objekt
                Funktionen (Methoden) zur Modifikation
    Warum?                                                             •
                                                                   Warum?       Können dynamisch erzeugt & zerstört werden
          •    Eine Klasse ist ein Objekt welches Mittel zur
     Syntax                                                              •
                                                                    Syntax      Die in der Klasse definierten Methoden können
               Erzeugung und Zerstörung von Instanzen.
                                                                                auf die Instanz angewendet werden.
  Perl vs. C++ (Klassenobjekt)                                   Perl vs. C++
          •
     Beispiel    Besitzt ein Interface welches von „außen“         Beispiel
                 benutzt werden kann




                                                                                                                                1
                      Objektorientierung                                                Objektorientierung
                                 Vererbung                                                         Vererbung
           • Klassen
Objektorientierung      können von Klassen erben                  Objektorientierung                  Tier
        •
    Warum? Eine von einer Basisklasse abgeleitete Klasse hat          Warum?
           die Eigenschafen der Basisklasse und die eigenen
     Syntax                                                            Syntax
                                                                                          Säugetier            Fische
  Perl vs. C++                                                      Perl vs. C++

     Beispiel                                                          Beispiel




                      Objektorientierung                                                Objektorientierung
                                                     Alter
                                 Vererbung           Geschlecht
                                                                                                   Vererbung

Objektorientierung                                   Bewege ( )   Objektorientierung
                                     Tier            Friss ()
                                                                                                      Tier
    Warum?                                                            Warum?

     Syntax                                                            Syntax
                        Säugetier              Fische                                     Säugetier            Fische
  Perl vs. C++                                                      Perl vs. C++

     Beispiel           Alter                Alter                     Beispiel
                        Geschlecht           Geschlecht
                        Bewege ( )           Bewege ( )
                                                                                            Hund                Hai
                        Friss ( )            Friss ( )
                        Säuge ( )            LegeEier ( )




                      Objektorientierung                                                Objektorientierung
                     Klassen ? Oder: Wo kommen die                                     Klassen ? Oder: Wo kommen die
                           Eigenschaften her?                                                Eigenschaften her?
Objektorientierung                                                Objektorientierung
          • Klasse ist „Prototyp“ einer Instanz                             • Klassenvariablen/ Methoden gelten für die
    Warum?                                                            Warum?
            Ausnahme: Klassenvariablen/Instanzen                            Klasse, nicht die Instanzen:
     Syntax                                                            Syntax
          • definiert alle Attribute eines Objektes                         • Man kann sagen: Klassenvariablen global
  Perl vs. C++                                                      Perl vs. C++
                                                                            auf Klassenebene, Instanzvariablen lokal in
     Beispiel                                                          Beispiel Instanz
                                                                            der




                                                                                                                          2
                      Objektorientierung                                                  Warum?
                                  Fagen?                                                Warum das Alles?

Objektorientierung                                          Objektorientierung   Vorteile der Objektorientierung:
        •Polymorphie, Persistenzhaltung,
    Warum?                                                          •
                                                                Warum?Kapselung        von Daten und Methoden
        Mehrfachvererbung, Abstrakte Klassen
     Syntax                                                      Syntax Dynamische
                                                                      •                  Verwaltung von Objekten zur
  Perl vs. C++                                                           Laufzeit
                                                              Perl vs. C++

     Beispiel                                                    Beispielbessere
                                                                      •            Abstraktion
                                                                      •Wiederverwendbarkeit und
                                                                       Teilsystemorientierung




                                                                                            Syntax
                OO Syntax in Perl                                                           Klassen

                                                                 • In Perl werden Klassen durch Namenräume realisiert
Objektorientierung
                      •Klassen                              Objektorientierung
                                                                 • Umschalten     des Namensraumes mittels package
    Warum?                                                      Warum?
                      •Methoden                                  • package Klassenname
     Syntax                                                      Syntax
                      •Module                                    • default: befindet man sich in package main
  Perl vs. C++                                                Perl vs. C++
                      •Objekte                                   • Datentypen eines Packages sind global
     Beispiel                                                    Beispiel
                                                                 • Adressierung mittels scope ‚::‘
                      •Vererbung




                                Syntax                                                      Syntax
                                Methoden                                                   Methoden

     • sind in einer Klasse definierte Funktionen                • Objektmethode ist normale Subroutine in Perl
Objektorientierung
     • sub machwas     {ok ich mach jetzt was}              Objektorientierung
                                                                 •Aufruf über     Objekt (Objektmethode)
    Warum?                                                      Warum?
     • Aufruf:                                                              $object->method (@args);
     Syntax &dieKlasse::machwas                                  Syntax
                                                                 •Aufruf über Klasse (Klassenmethode)
     • bless $self,
  Perl vs. C++       $class                                   Perl vs. C++Class->method  (@args); oder
                Verbindet eine Reference mit einer Klasse
     Beispiel                                                    Beispiel Class::method (@args);
                                                                  Erstes Argument jeder Methode ist Klassenname




                                                                                                                        3
                               Syntax                                                              Syntax
                                Module                                                             Objekte

     • enthalten meisst Klasse mit gleichem Namen                         • ein Objekt ist eine Referenz auf eine Datenstruktur
Objektorientierung                                                   Objektorientierung
     • Endung .pm                                                         • my $obj = new Klassenname (Parameter)
    Warum?                                                               Warum?
     • werden mit use geladen                                             • eine new Methode muss definiert worden sein
     Syntax                                                                ‡ Konstruktor
                                                                          Syntax
     • Modules werden in Directories @INC gesucht
  Perl vs. C++                                                         Perl vs. C++

     Beispiel                                                             Beispiel




                               Syntax                                                              Syntax
                               Vererbung                                                         Class::Struct

     • In Perl ist Vererbung die Vererbung von Methoden                   • erstellt automatisch new und Accessoren
Objektorientierung
     • die Variable   @ISA enthält die Superklasse (n)               Objektorientierung
                                                                                    struct:
                                                                          • Subroutine
    Warum?                                                                use
                                                                         Warum? Class::Struct;
     • wird eine Methode nicht in einer Klasse gefunden, so
                                                                            struct Test => {
       wird
     Syntax eine entsprechende Methode in $ISA[0] gesucht,                Syntax                        EinName ‚$‘,
       danach in den Eltern von $ISA[0], dann in $ISA[1] ...
  Perl vs. C++                                                         Perl vs. C++                     EinFeld ‚@‘
     • SUPER::methode führt eine Methode in der                                                    };
     Beispiel                                                             Beispiel
       übergeordneten Klasse durch
                                                                          • Aber: keine Komplexen Aufgaben möglich




                          Pers vs. C++                                                           Beispiel
        • OO in Perl vor allem für die Strukturierung von Methoden
        • Für komplexe Datenstrukturen besser C++
Objektorientierung                                                   Objektorientierung
        • OO & Module geben die Möglichkeit der Abstraktion +
    Warum?                                                               Warum?
          besserer Wiederverwendbarkeit
     Syntax                                                               Syntax
        • Perl: Methoden können nicht überladen werden:
           C++
  Perl vs. Signatur
                  besteht nur aus Methodennamen                        Perl vs. C++

     Beispiel                                                             Beispiel




                                                                                                                                  4