/*
 * Instituto Superior de Engenharia do Porto
 *
 * Estruturas de Informação
 *
 * 2000/2001
 *
 * ------------------------------------------
 *
 * Miniteste
 *
 */

/*

Dada a seguinte classe CDuracao que representa uma duração temporal,
implemente
a) o construtor de cópia
b) um construtor que aceite argumentos por defeito para inicializar o
objecto
c) um construtor que permita inicializar um objecto dada uma duração em
segundos
d) o operador de adição
e) o operador de atribuição
f) um método para devolver a duração em segundos

	class CDuracao
	{
		int m_nHora;
		int m_nMinutos;
		int m_nSegundos;
	public:
		...

		setHoras(int nH) 	{ m_nHora = nH % 24; }
		setMinutos(int nM)	{ m_nMinutos = nM % 60; }
		setSegundos(int nS)	{ m_nSegundos = nM % 60; }
		getHoras() const	{ return m_nHora; }
		getMinutos() const	{ return m_nMinutos; }
		getSegundos() const	{ return m_nSegundos; }

		...
	};

*/

#include "duracao.h"

CDuracao::CDuracao(const CDuracao& o)
{
	setHoras(o.getHoras());
	setMinutos(o.getMinutos());
	setSegundos(o.getSegundos());
}

CDuracao::CDuracao(int nH /* = 0 */, int nM /* = 0 */, int nS /* = 0 */)
{
	setHoras(nH);
	setMinutos(nM);
	setSegundos(nS);
}

CDuracao::CDuracao(long nDurSeg)
{
	int nH = nDurSeg / (60*60);
	setHoras(nH);
	int nM = (nDurSeg-nH*3600) / 60;
	setMinutos(nM);
	int nS = nDurSeg-nH*3600-nM*60;
	setSegundos(nS);
}

CDuracao operator+(const CDuracao& a, const CDuracao& b)
{
	long nS1 = a.emSegundos();
	long nS2 = b.emSegundos();
	CDuracao c(nS1+nS2);
	return c;
}

CDuracao& CDuracao::operator=(const CDuracao& o)
{
	setHoras(o.getHoras());
	setMinutos(o.getMinutos());
	setSegundos(o.getSegundos());
	return *this;
}

long CDuracao::emSegundos() const
{
	return getSegundos() + getMinutos()*60 + getHoras()*60*60;
}



