28.03.2014 Aufrufe

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

analog folgen im-teil, abs-wert und winkel bzw. im-teil-rechteck<br />

und im-teil-polar usw.<br />

Vorteil dieses Ansatzes: modularer Entwurf: jedes Modul realisierbar<br />

nur durch seine Schnittstellen<br />

Nachteil: generische Prozeduren (real-teil, ...) müssen alle Darstellungen<br />

kennen (Zuordnungen zu eigentlichem Selektor nötig);<br />

Folge: jede neue Darstellung bringt Änderungen aller generischen<br />

Prozeduren mit sich<br />

(b) datengesteuerte Programmierung: Daten (und nicht Prozeduren)<br />

entscheiden selbst, wie sie bearbeitet werden; Beispiel: eine komplexe<br />

Zahl in Rechteckdarstellung liefert den Realteil durch Prozedur<br />

realteil-rechteck,<br />

eine Zahl in Polardarstellung durch die Prozedur<br />

real-teil-polar. Notwendig: Zuordnung (generische Operation,<br />

Typ) ↦→ Prozedur; Realisierung als Tabelle:<br />

rechteck<br />

polar<br />

real-teil real-teil-rechteck real-teil-polar<br />

im-teil im-teil-rechteck im-teil-polar<br />

abs-wert abs-wert-rechteck abs-wert-polar<br />

winkel winkel-rechteck winkel-polar<br />

Aufbau der Tabelle: (put ); Durchsuchen<br />

der Tabelle: (get liefert ;<br />

(Implementierung in Kapitel (4)).<br />

Aufbau der konkreten Tabelle mit Prozeduren (nicht Namen!) als<br />

Einträge:<br />

(put ’rechteck ’real-teil real-teil-rechteck)<br />

(put ’polar ’im-teil im-teil-polar)<br />

...<br />

Ausführen einer Prozedur für ein Objekt:<br />

(define (op-ausfuehren op obj)<br />

(let ((proz (get (typ obj) op)))<br />

(if (not (procedure? proz))<br />

(proz (inhalt obj))<br />

(error "Operater undefiniert!"))))<br />

Nun wird eine typunabhängige Definition generischer Operationen<br />

möglich:<br />

34

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!