Skip to main content.

Navigation:

Ausgabefunktionen und Tastatursteuerung

Ziel

Aufgabe

Testausgaben können die Fehlersuche vereinfachen und bieten eine gute Gelegenheit, sich in eine vorgegebene Entwicklungsumgebung einzuarbeiten. Aus diesem Grund soll unser Übungsbetriebssystem oo-StuBS als erstes solche Ausgabefunktionen erhalten. Die zu implementierenden Ausgabefunktionen sollen ähnlich wie die IO-Streams der C++ Bibliothek verwendet werden können und mit Hilfe der Klassen IO_Port (wird von uns vorgegeben), CGA_Screen, Stringbuffer, O_Stream und CGA_Stream umgesetzt werden. Damit die Ausgabefunktionen auch überall in oo-StuBS verwendet werden können, soll ein globales CGA_Stream Objekt kout erzeugt werden. Um darüber hinaus auch interaktive Anwendungsprogramme zu erlauben, sollt ihr zusätzlich noch die Klasse Keyboard_Controller vervollständigen, die neben Key in der Vorgabe enthalten ist.

Die Funktionsfähigkeit der genannten Klassen soll mit Hilfe eines von uns gestellten aussagefähigen Testprogramm (in ./src/user/task1.cc) gezeigt werden. Das obige UML Diagramm dient nur zur Orientierung, die dort verlinkte Dokumentation ist veraltet. Die neue Dokumentation findet ihr in der Entwicklungsumgebung, nachdem ihr in deren Hauptverzeichnis 'make doc' aufgerufen habt, im Unterordner ./doc/html/.

Hinweis: In den späteren Aufgaben soll Anwendungs- und Testcode in der Klasse Application (aus der Vorgabe) und nicht in main() implementiert werden. Wer möchte kann dies natärlich auch schon bei der ersten Aufgabe so handhaben.

Implementierung

Die erste Aufgabe besteht im Wesentlichen aus zwei Teilen Ausgabe und Eingabe, wobei der Test der Eingabe ohne eine Ausgabe nicht möglich ist. Die Teilaufgabe Ausgabe kann zudem in drei voneinander unabhängige Teile gegliedert werden, die sehr gut einzeln gelöst und getestet werden können. Daher empfehlen wir euch die folgende Bearbeitungsreihenfolge:

Ausgabe
  1. Umsetzung der Klasse CGA_Screen und Test in einer kleinen Anwendung.
  2. Umsetzung der Klassen Stringbuffer und O_Stream.
  3. Umsetzung der Klasse CGA_Stream und Validierung mit einem kleinen Testprogramm.
Eingabe
  1. Vervollständigung der Klasse Keyboard_Controller und Umsetzung der entgültigen Testanwendung.

Hinweis: Achtet auf eine saubere Verwaltung aller von euch allozierten Puffer. Achtet außerdem darauf, dass Funktionen und Variablen, die modullokal gültig sind, als static gekennzeichnet werden sollten.

Vorgabe

Für die erste Aufgaben benötigt Ihr die Entwicklungsumgebung (enthält auch die erste Aufgabe), die vorgefertigte Klassen, Dokumentation, Assemblerdateien und ein Makefile enthält, mit deren Hilfe ihr euer Betriebssystem übersetzen und testen könnt. Denkt bitte daran, dass eurer Betriebssystem auf dem Abnahmelaptop laufen muss, ansonsten können wir eine Abgabe nicht akzeptieren.

Hinweis:Wir haben kürzlich noch einige Fehler in der Vorgaben entdeckt. Aus diesem Grund haben wir die Vorgabe überarbeitet und stellen darüber hinaus einen Patch zur Verfügung.

Hilfestellung