Folge 21.2, Exkurs für Abiturienten 1:

Drei Konstruktionsvorschläge für das Stackinterpreter-Projekt

Im Hauptskript hat sich die Frage gestellt, wer ist eigentlich für die Zusammenarbeit von Stackmaschine und Codebuffer verantwortlich? Vom Projekt-Design her sind mehrere Lösungen denkbar.

Möglichkeit 1

Die Stackmaschine HAT einen Codebuffer und kann daher ganz einfach auf die Methoden der Klasse Codebuffer zurückgreifen:

Sei cb das Codebuffer-Objekt, so könnte mit dem Befehl cb.liesDatei("Code.txt") zum Beispiel der Inhalt der Codedatei in den Codebuffer gelesen werden. Dieser Befehl würde von einer entsprechenden Methode der Stackmaschine gegeben werden müssen. Nach dem Einslesen der Codedatei müsste eine Methode interpretiere() der Stackmaschine die Zeilen analysieren und ausführen.

Möglichkeit 2

Die Stackmaschine und der Codebuffer sind beide gleichberechtigt in eine übergeordnete Klasse Stackinterpreter integriert. Mit anderen Worten, der StackInterpreter HAT eine Stackmaschine und einen Codebuffer:

Möglichkeit 3

Der StackInterpreter IST eine Stackmaschine und HAT einen Codebuffer:

Letzten Endes ist es egal, für welche der drei Möglichkeiten man sich bei der Implementation des Systems entscheidet. Ich persönlich habe mich für mein weiteres Vorgehen für die Möglichkeit 2 entschieden, weil mir dies am sinnvollsten vorkam, zumal der Stackinterpreter im weiteren Verlauf des Kurses um eine weitere Klasse erweitert werden soll, nämlich eine Variablenverwaltung. Die Aufgabenstellung im Folgenden wird sich also immer auf die Möglichkeit 2 beziehen.

Zurück zu Teil 2 der Folge 21

(C) Ulrich Helmich, Mai 2008





IMPRESSUM