#ifndef HF_NAPTAR_DATUM_H #define HF_NAPTAR_DATUM_H #include #include enum napnev { HETFO = 0, KEDD = 1, SZERDA = 2, CSUTORTOK = 3, PENTEK = 4, SZOMBAT = 5, VASARNAP = 6 }; std::ostream &operator<<(std::ostream &os, napnev nap); /*! * @brief Egy naptár alapját napok képzik. Ezeket ebben az osztályban tároljuk. * Ez tárolja az adott dátum évét, hónapját és napját. * Opcionálisan tárolhat egy 128 karakterből álló megjegyzést is. */ class Datum { //! A dátum éve int ev; //! A dátum hónapja int honap; //! A dátum napja int nap; //! Megjegyzés a dátumhoz char megjegyzes[129]; protected: static int honap_napok[12]; public: /*! * @brief Kiszámítja, hogy mennyi nap telt el a dátum óta * @return Az eltelt napok száma */ int napszam() const; /*! * @brief Kiszámítja a dátum óta eltelt szökőnapok számát. napszam() függvényhez szükséges. * @return A dátum óta eltelt szökőnapok száma */ int szokoev() const; /*! * @brief Alap konstruktor. Alap értéke: 1970.01.01. (Unix timestamp kezdete) */ Datum() : ev(1970), honap(1), nap(1) { strcpy(megjegyzes, "Unix timestamp"); } /*! * @brief Paraméterrel hívható konstruktor * @param ev @copybrief ev * @param honap @copybrief honap * @param nap @copybrief nap * @param note @copybrief megjegyzes */ Datum(int ev, int honap, int nap, const char *note = "") : ev(ev), honap(honap), nap(nap) { strcpy(megjegyzes, note); } /*! * @brief Másoló konstruktor * @param datum A lemásolandó Datum osztály */ Datum(const Datum &datum); Datum& operator=(const Datum& date); virtual ~Datum() {} virtual bool equal(const Datum& d) const; /*! * @brief Egyenlőséget ellenőrző operátor * @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot. * @return Az egyenlőséget jelző logikai érték */ bool operator==(const Datum&nap1) const; /*! * @brief Egyenlőtlenséget ellenőrző operátor * @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot. * @return Az egyenlőtlenséget jelző logikai érték */ virtual bool operator!=(const Datum &nap2) const; /*! * @brief Két dátum idejének összehasonlítása * @param nap Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot. * @return Logikai érték */ virtual bool operator<(const Datum &nap) const; /*! * @copybrief operator< * @copydetails operator< */ virtual bool operator<=(const Datum &nap) const; /*! * @copybrief operator< * @copydetails operator< */ virtual bool operator>(const Datum &nap) const; /*! * @copybrief operator< * @copydetails operator< */ virtual bool operator>=(const Datum &nap) const; /*! * @brief Kivonás operátor * @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot. * @return A két dátum közötti napok száma */ virtual int operator-(const Datum &nap2) const; /*! * @brief Megadja a dátum hónapját * @return A dátum hónapjának száma (1-12) */ int getHonap() const; /*! * @brief Megadja a dátum évét * @return @copybrief ev */ int getEv() const; /*! * @brief Megadja a dátum napját * @return @copybrief nap */ int getNap() const; /*! * @brief Kiszámítja, hogy az adott dátum milyen napra esik. * @return A dátum napjának neve (napnev típus) */ napnev getNapnev(); /*! * Megadja a dátumhoz tartozó megjegyzést * @return A Datum-hoz tartpozó megjegyzés */ virtual const char *getMegjegyzes() const; /*! * @brief Kiszámítja a dátumhoz tartozó UNIX-időt * @return A Datum UNIX-ideje * @note Az időt éjfélnek veszi */ int getUnixTime(); }; std::ostream &operator<<(std::ostream &os, const Datum &d); #endif