Modificação da classe Time. Seria perfeitamente razoável para a classe Time das figuras 18.17 e 18.18 representar a hora internamente como o número de segundos desde a meia-noite em vez de os três valores inteiros hour, minute e second. Os clientes devem usar os mesmos métodos public e obter os mesmos resultados. Modifique a classe Time da Figura 18.17 para implementar a hora como o número de segundos desde a meia-noite, e mostre que não existe mudança visível na funcionalidade para os clientes da classe. [Nota: esse exercício demonstra bem as virtudes da ocultação da implementação.]

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!! Bora para mais um exercício.

Vamos criar um programa que utiliza a classe Time com as funções membros que retorna um horário definindo através dos números de segundos da meia noite.

Primeiro vamos definir os cabeçalhos do programa e também da classe Time com os dados membro e as funções membro.

//cabeçalhos

using namespace std;

#include

#include

//definição da classe

class Time{

public:

//construtor

Time(int=0,int=0,int=0);

//funções-membro

Time&setT(int,int,int);

Time&setH(int);

Time&setM(int);

Time&setS(int);

int getHr() const;

int getMnt() const;

int getSec() const;

//exibe no formato universal

void printUniversalTime() const;

//exibe no format AM PM

void printStandardTime() const;

private:

//varaiaveis

int totalSec;

};

Passo 2

Em seguida vamos inicializar o construtor da classe e definir as funções que irão retornar a hora em relação aos segundos passados.

//definindo os valores para os dados-membros

Time:: Time(int hr, int min, int sec){

setT(hr,min,sec);

}

//definindo hora,minuto e segundo

Time &Time :: setT(int h, int m , int s){

setH(h);

setM(m);

setS(s);

return *this;

}

//define hora

Time &Time :: setH(int h){

int hours = (h >= 0 && h

totalSec = (hours * 3600) + (getMnt() * 60) + getSec();

return *this;

}

//define minuto

Time &Time :: setM(int m){

int minutes = ( m >= 0 && m

totalSec = (getHr() * 3600) + (minutes * 60) + getSec();

return *this;

}

//define segundos

Time &Time :: setS( int s){

int seconds = (s >= 0 && s

totalSec = (getHr() * 3600) + (getMnt() * 60) + seconds;

return *this;

}

//retorna hora

int Time::getHr() const{

return (totalSec / 3600);

}

//retorna minutos

int Time:: getMnt() const{

return ((totalSec% 3600) /60);

}

//retorna segundos

int Time :: getSec() const{

return ((totalSec % 3600) % 60);

}

//exibe formato universal

void Time:: printUniversalTime() const{

cout

}

//exibe format AM PM

void Time:: printStandardTime() const{

int hours = getHr();

cout

}

Passo 3

Agora precisamos criar os objetos da classe com uma hora definida e fazer a chamadas das funções criada dentro da função principal main()

int main(){

//DEFININDO OBJETOS

Time t;

//atribuindo valores

t.setH(20).setM(22).setS(55);

//exibe e realiza chama as funções

cout

t.printUniversalTime();

cout

t.printStandardTime();

return 0;

}

Passo 4

A saída do programa será:

E assim finalizamos nosso exercício galera!!!! Até o próximo.

Resposta

Código:

//cabeçalhos

using namespace std;

#include

#include

//definição da classe

class Time{

public:

//construtor

Time(int=0,int=0,int=0);

//funções-membro

Time&setT(int,int,int);

Time&setH(int);

Time&setM(int);

Time&setS(int);

int getHr() const;

int getMnt() const;

int getSec() const;

//exibe no formato universal

void printUniversalTime() const;

//exibe no format AM PM

void printStandardTime() const;

private:

//varaiaveis

int totalSec;

};

//definindo os valores para os dados-membros

Time:: Time(int hr, int min, int sec){

setT(hr,min,sec);

}

//definindo hora,minuto e segundo

Time &Time :: setT(int h, int m , int s){

setH(h);

setM(m);

setS(s);

return *this;

}

//define hora

Time &Time :: setH(int h){

int hours = (h >= 0 && h

totalSec = (hours * 3600) + (getMnt() * 60) + getSec();

return *this;

}

//define minuto

Time &Time :: setM(int m){

int minutes = ( m >= 0 && m

totalSec = (getHr() * 3600) + (minutes * 60) + getSec();

return *this;

}

//define segundos

Time &Time :: setS( int s){

int seconds = (s >= 0 && s

totalSec = (getHr() * 3600) + (getMnt() * 60) + seconds;

return *this;

}

//retorna hora

int Time::getHr() const{

return (totalSec / 3600);

}

//retorna minutos

int Time:: getMnt() const{

return ((totalSec% 3600) /60);

}

//retorna segundos

int Time :: getSec() const{

return ((totalSec % 3600) % 60);

}

//exibe formato universal

void Time:: printUniversalTime() const{

cout

}

//exibe format AM PM

void Time:: printStandardTime() const{

int hours = getHr();

cout

}

int main(){

//DEFININDO OBJETOS

Time t;

//atribuindo valores

t.setH(20).setM(22).setS(55);

//exibe e realiza chama as funções

cout

t.printUniversalTime();

cout

t.printStandardTime();

return 0;

}