Informatik 1 - Mitschriften von Klaas Ole Kürtz
Informatik 1 - Mitschriften von Klaas Ole Kürtz
Informatik 1 - Mitschriften von Klaas Ole Kürtz
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