Open Source im professionellen Einsatz
Linux-Magazin 03/2001
388

Vererbung in DrScheme

Wie erwähnt unterstützt DrSchemes Objektsystem nur die einfache Vererbung sowie eine Art Mehrfachvererbung durch Schnittstellenklassen (Interfaces). Lassen Sie sich von der Länge des Beispiels in Listing 4 nicht abschrecken. Es ist so lang, da es möglichst viele Elemente der Vererbung zeigen soll und später in den Beispielen für GUI ebenfalls eingesetzt wird.

Dass p2% von p1% abgeleitet wurde, erkennt man am Klassenkopf. Dort wird als Vorgänger der Klasse p2% p1% angegeben. Die abgeleitete Klasse erwartet weitere Initialisierungselemente (eine Adresse und eine E-Mail). Die beiden neuen Elemente sind von außen zugänglich (Kommentar ; 1) und änderbar (; 2). Weiterhin wurden Möglichkeiten vorgesehen, Objekte dieser Klasse dauerhaft speichern zu können (Persistenz) (; 3) und Objekte dieser Klasse durch eine beliebige (vierelementige) Liste anlegen zu können (; 4).

Spezielle Merkmale für die Behandlung von Vererbung sind (rename super-dummy dummy) sowie die Liste, die mit override eingeleitet wird. Möchten Sie in DrScheme auf ein Element des Vorfahren zugreifen, müssen Sie dem Element einen neuen Namen geben ( rename). Die geerbte und umbenannte Version wird im Abschnitt override (dummy (+ super-dummy 2)) aufgerufen.

Mit override geben Sie an, eine geerbte Variable überschreiben zu wollen. Da der Wert der Instanzvariablen dummy in p1% eins ist, wird der Wert hier auf drei gesetzt. Damit wurden (fast) alle Auszeichnungen für die Vererbung in DrScheme vorgestellt. Bitte schauen Sie in [2] nach ausgelassenen Elementen.

Generische Funktionen

Der Zugriff auf Instanzvariablen mit dem Konstrukt (ivar obj symbol) kann sehr fehleranfällig und/oder ineffizient sein. Als Vereinfachung bieten sich so genannte generische Funktionen an.

Listing 5: Benutzung generischer Funktionen

(define p-dummy (make-generic/proc p1% `dummy))

(define (use-of-generic-functions)
  (let ((p1 (make-object p1% "foo" "bar"))
        (p2 (make-object p2% "foo" "bar" 
              "Footown" "foo@Footown")))
    (display "p1% dummy = ")
    (display (p-dummy p1))
    (display "; p2% dummy = ")
    (display (p-dummy p2))
    (newline)
    (values)))

In Listing 5 wird mit dem ersten define eine Funktion definiert, die auf alle Nachfolger von p1% anzuwenden ist und den Inhalt des Symbols dummy ausgibt. Wie in fast allen Lisps sind Funktionen nicht an Klassen gebunden. Die Ausgabe der Funktion dürfte

"p1% dummy = 1; p2% dummy = 3"

sein. Damit möchte ich die Vorstellung des Objektsystems von DrScheme beenden und als krönenden Abschluss dieses Artikels das DrScheme-GUI-Toolkit (MrEd genannt) vorstellen.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Standards? Standards!

    Der Scheme-Standard hat einen recht kleinen Umfang, also greifen Programmierer für größere Projekte zwangsläufig auf Erweiterungen zurück. Im Zentrum dieses Artikels stehen daher Standard-Scheme und seine Erweiterungen.

  • Funktioneller gehts nicht

    Nachdem im vorherigen Teil die Basiselemente der Scheme-Programmierung vorgestellt wurden, soll in diesem Artikel ein essentieller Vorteil von Scheme die Hauptrolle spielen, nämlich die funktionale Programmierung.

  • Wechsel auf der Brücke

    Scripting funktioniert nicht nur bei den üblichen Verdächtigen wie Bash, Korn-Shell und Python, sondern auch mit Scheme. Im Zentrum des Artikels stehen darum die Shell-Programmierung mit Scheme sowie die Programmierung fürs Internet.

  • PLT-Scheme 4.0 mit vielen Neuerungen

    PLT-Scheme, ein Softwarepaket bestehend aus Scheme-Implementierung und Entwicklungsumgebung, ist in Version 4.0 erschienen. Die Entwickler haben rund ein Jahr in die neue Release investiert.

  • Web-Wunder

    Mit Scheme setzt das freie Web-Framework Hop eine ziemlich esoterische Programmiersprache ein. Seine Architektur und Flexibilität machen es jedoch zu einer spannenden Alternative zu Django & Co.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.