Klassenstruktur

In Haskell sind Klassen Interfaces, Instanzen Implementierungen von Interfaces und anstatt Klassen von Objektorientierter Sprachen gibt es nur Datenstrukturen. Deswegen sprechen wir hier von Klassen und Datenstrukturen bzw. Datentypen.

Wir wollen eine Klasse Problem schreiben, die die Interfacedefinition der Korrekturprogramme darstellt. Diese Klasse ist eine Relation zwischen drei Datentypen. Diese sind Problem, Instanz und Beweis.

Die Funktionen, welche von den Instanzen implementiert werden müssen, sind:

Die Klasse wird dann für die einzelnen Probleme instantiiert. Somit entscheidet der Interpreter selbst, um welches Problem es sich handelt, und welches Korrekturprogramm benutzt wird.

Desweiteren soll die Datenstruktur Einsendung entweder eine Aufgabe oder eine Lösung repräsetieren, welche vom Studenten kommt. Eine Aufgabe besteht aus den Teilen Problem, Instanz und Beweis. Eine Lösung besteht aus den Teilen Problem, Ident und Beweis. Dabei sind Problem Instanz und Beweis die gleichen Datentypen, wie sie in der Klasse Problem verwendet werden. Hinzu kommt Ident, welcher zur Unterscheidung der einzelnen Aufgaben eines Problems genutzt wird.

Demnach ergibt sich dadurch eine exaktere Beschreibung des Programms wie folgt:

\resizebox*{0.88\columnwidth}{!}{\includegraphics{bilder/klasse_aufgabe.eps}}

Johannes Waldmann 2009-11-17