dasdfaqwerdf

Page 50

Classe Date: funções estáticas

As funções estáticas pertencem à classe, mas não operam sobre os objectos. Operam apenas sobre os seus argumentos e sobre os membros estáticos da classe. Não confunda membros estáticos com memclass classDate Date{{ //... bros de dados. Cada //... public: // static public: // static objecto tem os seus próprios membros static staticbool boolValid(int Valid(inty, y,int intm, m,int intd); d); static bool Valid(int y, int m); de dados. Os memstatic bool Valid(int y, int m); static bool Valid(int y); static bool Valid(int y); bros estáticos são da classe e são static // staticbool boolLeapYear(int LeapYear(inty); y); //pre preValid(y); Valid(y); static staticint intDaysInMonth(int DaysInMonth(inty, y,int intm); m);// //pre preValid(y, Valid(y,m); m); partilhados por todos static int DaysInYear(int y); // pre Valid(y); static int DaysInYear(int y); // pre Valid(y); os objectos. Primeiro ano do calendário, primeiro dia do private: private: // //static staticdata datamembers members calendário, dia da semana respectivo e tabela dos static staticconst constint intfirstYear; firstYear; números de dias dos meses nos anos comuns, static const Date first; static const Date first; static staticconst constWeekdayType WeekdayTypefirstWeekday; firstWeekday; Os membros estáticos são static const int static const intdaysInMonth[]; daysInMonth[]; inicializados no ficheiro .cpp. }; };

2003-07-19

Curso de Programação com C++ © Pedro Guerreiro 2003

99

Construtores de datas O construtor por defeito, que dá a data de “hoje”, é o mais sofisticado: A variável time0 recebe o tempo corrente, Date::Date() Date::Date() {{ time_t time_ttime0 time0==::time(0); ::time(0); struct ::tm *now struct ::tm *now==::localtime(&time0); ::localtime(&time0); year year==now->tm_year now->tm_year++1900; 1900; month month==now->tm_mon now->tm_mon++1; 1; day = now->tm_mday; day = now->tm_mday; }}

Os outros construtores são rotineiros: Date::Date(int Date::Date(intyear, year,int intmonth, month,int intday): day): year(year), year(year), month(month), month(month), day(day) day(day) {{ }} 2003-07-19

calculado pela função de biblioteca ::time, que dá o número de segundos desde as zero horas de 1 de Janeiro de 1970, UTC. Depois, a função ::localtime converte esse número para uma variável de tipo ::tm que tem membros para o ano, mês, dia (e ainda outros que não usamos aqui), tendo em conta a zona horária. Essa variável é apontada pela variável local now. Para usar estas funções é preciso fazer #include <ctime>. (Para mais informação, consulte a documentação.) Date::Date(const Date::Date(constDate& Date&other): other): year(other.year), year(other.year), month(other.month), month(other.month), day(other.day) day(other.day) {{ }}

Curso de Programação com C++ © Pedro Guerreiro 2003

100


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.