OOStuBS/MPStuBS
Aufgabe 0: Operatorenüberladung in C++

Lernziele

  • Kennenlernen bzw. Auffrischen der Programmiersprache C++
  • Erste Schritte mit dem Versionsverwaltungssystem GIT

Vorwort

Diese Aufgabe ist als Teil der ersten Aufgabe herausgetrennt worden, um den Umgang mit C++ zu wiederholen und aufzufrischen. Sie wird nicht bewertet. O_Stream und Stringbuffer werden allerdings für Aufgabe 1 später wieder benötigt. Aufgabe 0 findet noch nicht auf nackter Hardware statt, sondern noch in der Umgebung eines anderen Betriebssystems.

Aufgabenbeschreibung

Für Testausgaben und zur Erleichterung der Fehlersuche sind Ausgabefunktionen in der Betriebssystementwicklung elementar. Hierfür bietet sich eine Funktionalität ähnlich der C++-I/O-Streams-Bibliothek an. D.h. die Ausgabeoperatoren << werden überladen, sodass verschiedene Typen in einen Ausgabestrom ausgegeben werden können. Damit lassen sich quasi Pipelines von auszugebenden Variablen und Objekten aufbauen.

In unseren Fall stellen wir die Funktionalität mit den Klassen O_Stream und Stringbuffer zur Verfügung. Die Standardbibliothek steht auf der nackten Hardware nicht zur Verfügung. Wir simulieren diesen Fall in dieser Ausgabe schon, indem wir nur die beiden primitiven Funktionen write() und putchar() verwenden, um den Code testen zu können.

Der Stringbuffer ist lediglich ein Puffer von einzelnen Zeichen, der über eine virtuelle flush-Methode verfügt. O_Stream erweitert den Puffer um die überladenen Ausgabeoperatoren, d.h., es fügt Formatierung von Werten zum Stringpuffer hinzu.

Die Ausgabe selbst soll von ConsoleOut und FileOut bereitgestellt werden, die die flush-Methode letztlich implementieren. Sie sollen zur Ausgabe auf die Konsole bzw. in eine Datei verwendet werden. Diese beiden Klassen werden wir nicht in das Betriebssystem für Aufgabe 1 übernehmen.

dot_a0.png
Klassenübersicht für Aufgabe 0

Eine Testanwendung ist der Vorgabe beigefügt (im Ordner test-stream).

Hilfestellung