Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Am Mo, den 17.05.2004 schrieb Peter Ross um 13:56:
> > Ja, so in etwa. Nur eben eine Ebene "drunter", nicht nur fuer komplete
> > Programme, sondern fuer einzelne Objekte.
> >
> > Wenn der Farbdialog um eine neue Einstellungsvariante erweitert wurde,
> > (neben Farbpalette nun auch RGB-Schieber), sehen das alle Programme, die
> > diesen benutzen.
>
> Ah ja, jetzt hab' ich's. Wenn "alte Funktionalität" in neuem Gewand
> präsentiert wird (aber der Rückgabewert gleich bleibt).
Es muß nicht einmal unbedingt derselbe Typ sein. In Spra-
chen mit dynamischem Typsystem genügt es, wenn die Funktio-
nen das gleiche »Protokoll« sprechen (so nennt man das).
Beispiele sind Smalltalk, Objective-C und Python. (C++ da-
gegen hat ein statisches Typsystem.)
Du kannst zum Beispiel Funktionen schreiben, die gar nicht
so genau wissen müssen, was ihre Argumente für Typen haben,
sondern die nur bestimmte Bedingungen erfüllen müssen, z.B.
daß das übergebenen Objekt eine bestimmte Methode hat.
Wenn Du etwa eine Funktion hast, die einen Schieberegler
anzeigt, könnte man sie so programmieren, daß man ihr ein
beliebiges Objekt übergeben kann, das die Methoden set-
value() und getvalue() hat. Dann kann man diesen Schiebe-
regler sofort für beliebige solche Objekte verwenden.
(Dies ist etwas völlig anderes als Templates in C++!)
Die Schieberegler-Funktion kann auch selbständig (zur Lauf-
zeit) überprüfen, ob das Objekt, das ihr gerade übergeben
wurde, das richtige Protokoll unterstützt (d.h. setvalue()
und getvalue() hat). Wenn nicht, könnte sie eine Alterna-
tive versuchen, oder eine Warnung ausgeben, oder eine
Exception erzeugen oder sonstwas.
In einigen Sprachen (z.B. Python) führt diese Dynamik so-
weit, daß man sogar zur Laufzeit eines Programms völlig
neue Objektklassen nachladen kann (aus einer Datei, von
einer Netzwerkverbindung oder sonstwo), und die vorhande-
nen Funktionen können sofort damit arbeiten. Man kann
auf diese Weise ein laufendes Programm nahtlos aktuali-
sieren und erweitern.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. We're sysadmins. To us, data is a protocol-overhead. To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Mon 17 May 2004 - 19:43:49 CEST