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();

}

}