Ausgabefunktionen und Tastatursteuerung
Ziel
- Auffrischen der Programmiersprache C++
- Kennenlernen der Entwicklungsumgebung
- hardwarenahe Programmierung (CGA Bildschirm und Tastatur)
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/.
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
-
- Umsetzung der Klasse
CGA_Screen
und Test in einer kleinen Anwendung. - Umsetzung der Klassen
Stringbuffer
undO_Stream
. - Umsetzung der Klasse
CGA_Stream
und Validierung mit einem kleinen Testprogramm.
- Umsetzung der Klasse
- Eingabe
-
-
Vervollständigung der Klasse
Keyboard_Controller
und Umsetzung der entgültigen Testanwendung.
-
Vervollständigung der Klasse
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.