Dr. M. Grabert Abteilung Angewandte Informationsverarbeitung 15. November 2001
Johannes Mayer Blatt 3


Uni-Logo



Objektorientierte Programmierung mit C++ (WS 2001/2002)


Abgabetermin: 15. November 2001


Beispiellösung

5 Wie lange dauert's denn noch? (10 Punkte)

Wie lange dauert das Semester denn eigentlich noch ... mir reicht's nämlich jetzt schon langsam. ;-) Also, im November sind es noch 22 Tage (vom 8.11.2001 ausgehend). Im Dezember nochmal 31 Tage, genauso wie im Januar. Und dann kommen noch 15 Tage bis zum 15. Februar dazu. Macht also insgesamt noch genau 99 Tage. Puuh, das strengt aber an und außerdem dauert das Semester noch so lange. ;-)

Schön wär's ja, wenn ich das mit einem Programm ausrechnen könnte. Halt, mit Objekten müsste das doch eigentlich ein Kinderspiel sein, naja, sagen wir lieber nicht allzu schwer. Also, tip tip und schon steht mein Hauptprogramm date.cc. Ich weiß also, dass ich eine Klasse Date schreiben will, die zwei Konstruktoren besitzt, so dass man beim einen das Datum durch drei Integer (Tag, Monat und Jahr) und beim anderen in Form eines Strings der Gestalt dd.mm.yyyy angeben kann. Natürlich sollen die Daten des Objekts, d.h. Tag, Monat und Jahr, privat, also von außen nicht zugänglich sein. Zum Zugriff stellen wir eben drei Methoden getDay(), getMonth() und getYear() bereit. Zudem gibt es eine Methode add(int) die die angegebene Anzahl von Tagen zu dem Datum addiert. Außerdem wollen wir noch die Methode distanceTo(Date), die die Anzahl von Tagen ausgibt, die das Datum noch vom angegebenen Datum trennen. Außerdem müsste man den <<-Operator für die Ausgabe von Daten überladen (siehe Skript S. 4-43 bzw. Übungen). Das können wir ja mal schnell in der Schnittstelle zusammenfassen. Diese stellt das Grundgerüst für date.h dar, wobei nur öffentliche Methoden und Daten angegeben sind. Den privaten Teil müssen Sie schon selbst ergänzen, dafür haben Sie aber auch die Freiheit!

Für das Datum betrachten wir nur Jahre ab 1900. Wenn das Datum, das im Konstruktor angegeben ist, kein korrektes Datum ist, oder mittels add() auf ein Datum vor 1900 gesprungen würde, soll dies dem Programmierer über eine Ausnahme (Exception) mitgeteilt werden. Die verschiedenen Ausnahmen sollen mit einem konstanten String parametriesiert werden (siehe Verwendung in date.cc).

Schreiben Sie also eine Datei date.h, so dass sich date.cc kompilieren lässt und korrekt läuft.

P.S.: Ein Schaltjahr liegt vor, wenn die Jahreszahl durch 4 teilbar ist und außerdem nicht durch 100 oder aber durch 400 teilbar ist.



Lösung:


\fbox{\textbf{date.h}}



Johannes Mayer, 2001-11-15