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;
}