Aperfeiçoamento da classe Date. Modifique a classe Date das figuras 17.17 e 17.18 para fazer a verificação de erro nos valores inicializadores dos dados-membro month, day e year. Além disso, forneça uma função-membro nextDay para incrementar o dia em um. O objeto Date sempre deverá permanecer em um estado coerente. Escreva um programa que teste a função nextDay em um loop que imprima a data durante cada iteração, para ilustrar que nextDay funciona corretamente. Não se esqueça dos testes para:
a) Incrementar para o próximo mês.
b) Incrementar para o próximo ano.
Passo 1
Fala Galera!!! Tudo certo? Espero que sim!! Bora para mais um exercício.
Vamos criar um programa que contenha uma classe Date responsável por definir uma data e através da data definida incrementar um dia e exibir o resultado. Nosso programa também terá que fazer o tratamento de erro, caso as datas definidas estejam fora do padrão. Por exemplo definir um mês fora do intervalo de 1 a 12.
Passo 2
Vamos iniciar incluindo os arquivos de cabeçalho e a definição da nossa classe Date com os namespaces necessários:
//arquivo de cabeçalho
#ifndef DATE_H_INCLUDED
#define DATE_H_INCLUDED
using namespace std;
#include
#include
//classe Date
class Date{
public:
//construtor
Date(int = 1, int = 1, int =2000);
//função para exibir dia seguinte
void nextDay();
//função para exibir data
void print();
private:
//definindo variavel mes
int month;
//definindo variavel dia
int day;
//definindo variavel ano
int year;
};
#endif
Passo 3
Após definir a classe, vamos precisar inicializar o construtor da classe responsável por verificar se os valores para o dia, mês e ano estão dentro dos parâmetros. E também definir as funções netDay() para ajustar a data após o incremento dos dias e a função print() para exibir a data.
//construtor da classe
//verificação se os valores estão dentro do parametro
Date:: Date( int m, int d, int y){
if(m >0 && m
month = m;
}
else{
month = 1;
}
if( d > 0 && d
day = d;
}
else{
day = 1;
}
if(y > 2000){
year = y;
}
else{
year = 2000;
}
}
//função exibir a data
void Date:: print(){
cout
}
//função para atualizar o valor da data
//de acordo com os intervalos para cada dia, mes, ano
void Date:: nextDay(){
day = day + 1;
if(day > 30){
day = day %30;
month = month +1;
if(month > 12){
month = month % 12;
year = year + 1;
}
}
}
Passo 4
Em seguida vamos inicializar a função principal main() que receberá o objeto da classe com uma data definida em 02/15/2022 e chamar as funções. Será usado um for para incrementar os dias na data definida com a chamada da função nextDay().
int main(){
int loop; // contaddor
Date date1(02,15,2022); //definindo uma data
//mostrar o formato da data
cout
cout
date1.print();
// loop para mostrar o incremento dos dias
for(loop = 1; loop
cout
date1.nextDay();
date1.print();
}
}
Passo 5
A saída do nosso programa será
E assim finalizamos nosso exercício galera!!!! Até o próximo.
Resposta
Código do programa:
//arquivo de cabeçalho
#ifndef DATE_H_INCLUDED
#define DATE_H_INCLUDED
using namespace std;
#include
#include
//classe Date
class Date{
public:
//construtor
Date(int = 1, int = 1, int =2000);
//função para exibir dia seguinte
void nextDay();
//função para exibir data
void print();
private:
//definindo variavel mes
int month;
//definindo variavel dia
int day;
//definindo variavel ano
int year;
};
#endif
//construtor da classe
//verificação se os valores estão dentro do parametro
Date:: Date( int m, int d, int y){
if(m >0 && m
month = m;
}
else{
month = 1;
}
if( d > 0 && d
day = d;
}
else{
day = 1;
}
if(y > 2000){
year = y;
}
else{
year = 2000;
}
}
//função exibir a data
void Date:: print(){
cout
}
//função para atualizar o valor da data
//de acordo com os intervalos para cada dia, mes, ano
void Date:: nextDay(){
day = day + 1;
if(day > 30){
day = day %30;
month = month +1;
if(month > 12){
month = month % 12;
year = year + 1;
}
}
}
int main(){
int loop; // contaddor
Date date1(02,15,2022); //definindo uma data
//mostrar o formato da data
cout
cout
date1.print();
// loop para mostrar o incremento dos dias
for(loop = 1; loop
cout
date1.nextDay();
date1.print();
}
}