[Dresden-pm] Frage zur Implementation von einer Schnittstelle

Hans-Dietrich Kirmse hd.kirmse at gmx.de
So Okt 30 11:28:52 PDT 2011


Hallo Torsten, Steffen & Steffen,

ich bitte schon im Vorab um Entschuldigung, das ich als Gast (in 
Thüringen gibt es keine Perl-Mongers Gruppe) und Laie (beschäftige mich 
erst seit ca. 5 Jahren als Autodidact mit Perl) euren alternativen 
Vorschlag anzweifel und vielleicht fällt auf Grund meines Alters (noch 
10 Jahre bis zur Rente) der Groschen manchmal sehr langsam, aber ich 
kann mir einfach nicht vorstellen, dass OOP hier überhaupt als Lösung in 
Betracht kommt.

Am 30.10.2011 10:36, schrieb Torsten Knorr:
> Hallo Hans-Dietrich,
>
> auch wenn die Frage schon beantwortet scheint möchte ich noch folgenden
> Gedanken anhängen.
> Eine Schnittstelle in Perl zu Spezifizieren dürfe sich als schwierig
> erweisen da Perl eine typenlose
> Programmiersprache ist. Die Spezifizierung einer Schnittstelle setzt aber
> genau eine Solche
> Type-Überprüfung voraus.

Hier würde es im angegebenen Fall nur um Folgendes gehen: es würde um 
das Einbinden einer Funktion (Subroutine) gehen, die entweder gar kein 
Argument benötigt (es soll ja nur der Displayname gesetzt werden) oder 
noch besser, den alten Displayname entgegen nimmt = String.
Zurück gibt diese Funktion den neuen Displayname, also auch wieder einen 
String. Das ist m.E. also hier absolut kein Problem.

Weiterhin: da ich diese Schnittstelle selbst implementiere, sind *alle* 
Optionen offen. Ich könnte also z.B. vorgeben, wie das Modul/Paket und 
auch wie die Funktion heißt.

> Aus diesem Grund möchte ich Dich auf ein anderes
> Konzept zur Lösung
> des obigen Problems hinweisen.
>
> Kurz: OOP - Vererbung

ich habe (in Perl) noch nie OOP genutzt, wohl aber in Pascal/Delphi. 
Trotzdem: wie kann OOP ein Konzept dafür darstellen?

> Also eine Klasse mit abstrakten Methoden schreiben welche als Basisklasse
> dient. In den abgeleiteten
> Klassen kann dann jeder Programmierer seine eigene Implementierung der
> Methoden vornehmen.

Und dann? Dann muss diese Klasse ja wohl instanziert und das neue Objekt 
aufgerufen werden. Das bedeutet aus meiner Sicht doch wohl, dass das 
Hauptprogramm diesbezüglich angepasst werden muss - anders gesagt, das 
Hauptprogramm muss doch wissen, dass es jetzt diese neue Klasse 
verwenden soll.

damit wird dieser Addon-Entwickler gleichzeitig derjenige, der die 
aktuellste Version des eigentlichen Programms "erstellt" hat und nutzt. 
Wie geht das dann weiter? Der Entwickler des eigentlichen Programms 
(hier ich) erstellt eine neue Version. Nur in dem Fall, dass ich 
überhautp Kenntnis von diesem (vermeintlichen?) Addon habe, kann ich das 
berücksichtigen. Das hat aber doch wohl nichts mehr mit einer 
Schnittstelle für die angegebene Zielstellung (Add-on) zu tun.

Mal auf ein anderes Programm übertragen: wenn ein Addon-Entwickler von 
Firefox den Firefox so erweitert, müßten aus meiner Sicht dann alle 
Addons in das Projekt einfließen, ansonsten fliegen die bei jedem Update 
(erstmal) wieder raus.

> Wies geht wird von Damian Conway in
>
> "Objektorientiert Programmieren mit Perl"
>
> beschrieben. (in deutsch)

Das Buch kenne ich (noch) nicht. Habe aber das Buch "Perl - Best 
Practices" von Damian Conway und auch "Perl Hacks ..." mit D.C. als 
Mitautor. Obwohl das Buch aus dem Jahre 2000 ist, werde ich mir das Buch 
mal zulegen.

zu Moose: da ich in Perl noch nie objektorientiert programmiert habe, 
habe ich demzufolge auch noch nicht Moose genutzt. Aber ich verfolge im 
foo-Magazin sehr wohl das was zu Moose geschrieben wurde.

Trotzdem, selbst wenn ich OOP mit Perl könnte - m.E. wäre das hier nicht 
zielführend. Wenn ich falsch liege, dann klärt mich bitte auf.

Viele Grüße
Hans-Dietrich


Mehr Informationen über die Mailingliste Dresden-pm