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
aussagefähigen Testprogramms gezeigt werden. Zu diesem Zweck soll im
Hauptprogramm main()
von oo-StuBS das Objekt kout
für verschieden formatierte Ausgaben genutzt werden.
Für den Test der Tastatureingabe ist ein Keyboard_Controller
Objekt zu instanziieren. In einer Schleife können dann Zeichen von
der Tastatur abgefragt und mittels kout
ausgegeben werden.
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
-
- 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
Neben der ersten Vorgabe benötigt ihr für die Lösung der Aufgabe auch die Entwicklungsumgebung, die einige Tools, Assemblerdateien und ein Makefile enthält, mit deren Hilfe ihr euer Betriebssystem übersetzen, testen und auf eine Bootdiskette schreiben könnt. Desweiteren müssen unter Windows und Solaris die folgenden Objektdateien im Aufgabenverzeichniss zu finden sein.