161 lines
3.9 KiB
C++
161 lines
3.9 KiB
C++
#ifndef HF_NAPTAR_DATUM_H
|
|
#define HF_NAPTAR_DATUM_H
|
|
#include <cstring>
|
|
#include <iostream>
|
|
|
|
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
|