/*
 * 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; }

		...
	};

*/

class CDuracao
{
	int m_nHora;
	int m_nMinutos;
	int m_nSegundos;
public:
	CDuracao(const CDuracao& o);
	CDuracao(int nH = 0, int nM = 0, int nS = 0);
	CDuracao(long nDurSeg);

	void setHoras(int nH) 	{ m_nHora = nH % 24; }
	void setMinutos(int nM)	{ m_nMinutos = nM % 60; }
	void setSegundos(int nM)	{ m_nSegundos = nM % 60; }
	int getHoras() const	{ return m_nHora; }
	int getMinutos() const	{ return m_nMinutos; }
	int getSegundos() const	{ return m_nSegundos; }

	long CDuracao::emSegundos() const;

	CDuracao& operator=(const CDuracao& o);
};

CDuracao operator+(const CDuracao& a, CDuracao& b);
