1 Implementierung der Universiäts-Klassenhiearchie.
Sie haben die String Klasse kennengelernt.
Erweitern Sie die String-Klasse um einen Tokenizer.
Schreiben Sie Ihre eigene Klasse, zum Beispiel mit dem Namen 'StringCL'.
Leiten Sie die Klasse vom STL-Typ 'string' ab.
Deklarieren/definieren Sie eine zusätzliche Elementfunktion, welche
einfach das erste Wort zurückgibt und dieses aus dem String löscht.
Worte werden durch Leerzeichen getrennt.
Wenn der String leer ist bzw. kein Leerzeichen enthält, sollte die
Funktion einfach den String löschen und den kompletten vorherigen
Inhalt selbst zurückgeben (den Inhalt bekommen Sie mit *this).
Die Elementfunktion könnte mit "string popToken(void)" deklariert sein.
Binden Sie die String-Typen ein (siehe Folien, using namespace-Anweisung nicht
vergessen!)
Denken Sie daran, dass bei der abgeleiteten Klasse die Elemente der Basis-
klasse geerbt werden. Das bedeutet, dass diese ohne Objekt angesprochen werden.
Ist beispielsweise die Funktion b() ein Element der Klasse A, so lautet innerhalb
der Klasse A der Aufruf dieser Elementfunktion
b();
Genauso verhält es sich in der abgeleiteten Klasse C. Wenn Sie C von A so ableiten:
class C : public A
{
// .... zusätzliche Elementfunktionen von Ihnen
}
können Sie die Elemente von A einfach in c benutzen, also z.B.
C::neueFunktion(void) {
b();
}
Genau dies gilt natürlich für die Elemente von 'string', welche Sie in Ihrer neuen
Klasse ja auch erben wollen. Dazu zählen zum Beispiel die Funktionen find() und substr().
Die Klasse sollte so verwendet werden:
#include
#include "StringCL.h"
main() {
StringCL satz = "Auf dem Mond fällt der Apfel auch mal weit vom Baum.";
cout << satz << endl;
string wort;
do {
wort = satz.popToken();
cout << wort << endl;
} while (wort != stringCL(""))
return 0;
}
(Tippfehler vorbehalten!)
Die Ausgabe dieses Programms sollte dann so aussehen:
Auf dem Mond fällt der Apfel auch mal weit vom Baum.
Auf
dem
Mond
fällt
der
Apfel
auch
mal
weit
vom
Baum.
Abgabetermin: Montag, 11. Juni, 13.00 Uhr per E-Mail. Bitte geben Sie
je eine .h und .cpp Datei für die StringCL Klasse ab.
Binaries sind überflüssig.