					     // Kapitel 5 - Programm 10 - DATUM.H
// Diese Datumsklasse soll zeigen, wie man eine nicht triviale
//  Klasse in C++ erstellt. Obwohl sie brauchbar ist, ist sie
//  immer noch einfach genug, um von einer neuen C++ Programmiererin
//  in all ihren Details verstanden zu werden.
#ifndef DATUM_H
#define DATUM_H
class Datum {
protected:
   int Monat;			 // 1 bis 12
   int Tag;                    // 1 bis MaxTage
   int Jahr;			 // 1500 bis 2200
   static char AusStrom[25];	 // Formatierte Ausgabe
   static char Format;		 // Format fr die Ausgabe
	// Berechne die Anzahl der Tage eines Monats
	// Beachte - Diese Methode ist privat und kann damit
	//		 nur innerhalb der Klasse aufgerufen werden
   int TageImMonat(void);
public:
	// Konstruktor - Setze das Datum auf das aktuelle Datum
	//		     und das Format auf 1
   Datum(void);
	// Setze das Datum auf diese Parameter
	//  Rckgabewert = 0 ---> Alle Daten ok
	//  Rckgabewert = 1 ---> Etwas auerhalb des Erlaubten
   int SetzeDatum(int EinMonat, int EinTag, int EinJahr);
	// Hole Monat, Tag oder Jahr der gespeicherten Daten
   int HoleMonat(void) { return Monat; };
   int HoleTag(void)   { return Tag;   };
   int HoleJahr(void)  { return Jahr;  };
	// Whle das gewnschte Format fr die Ausgabe aus, wenn
	//  HoleFormatiertesDatum aufgerufen wird
   void SetzeFormat(int EinFormat) { Format = EinFormat; };
	// Gib eine ASCII-Z Zeichenfolge mit dem gespeicherten Format zurck
	//   Format = 1	Aug 29, 1991
	//   Format = 2	29.8.91
	//   Format = 3	29.8.1991
	//   Format = 4	29 Aug 1991       Militrische Zeit
	//   Format = ?	Alles andere wird als Format 1 interpretiert
   char *HoleFormatiertesDatum(void);
	   // Gib Jan Feb Mar Apr etc. zurck
   char *HoleMonatsName(void);
};
#endif


