// cConta.cpp 
// 16 de Janeiro de 2001
// Acrescentada a definição das operações da nova classe cContaPoupanca  

#include "cConta.h"


// Definição da conta ordem 

char *cContaOrdem::Descricao = "Conta a Ordem";


cContaOrdem::cContaOrdem( int NumConta )
{
	Saldo = 0;
	NrConta = NumConta;
}

int cContaOrdem::GetNrConta()
{
	return NrConta;
}
	

float cContaOrdem::GetSaldo()
{
	return Saldo;
}


char *cContaOrdem::GetDescricao()
{
	return Descricao;
}



bool cContaOrdem::Depositar( float Valor )
{
	Saldo = Saldo + Valor;
	return true;
}


bool cContaOrdem::Levantar( float Valor )
{
	if ( Saldo >= Valor )
	{
		Saldo = Saldo - Valor;
		return true;
	}
	else
		return false;

}



// Definição da classe cContaOrdenado

char *cContaOrdenado::Descricao = "ContaOrdenado";

cContaOrdenado::cContaOrdenado( int NumConta ) : cContaOrdem( NumConta )
{
	LimiteCredito = 100000;
}


char *cContaOrdenado::GetDescricao()
{
	return Descricao;
}



bool cContaOrdenado::Levantar( float Valor )
{
	if ( Saldo + LimiteCredito >= Valor )
	{
		Saldo = Saldo - Valor;
		return true;
	}
	else
		return false;
	
}



// Implementação ALTERNATIVA do método Levantar
// bool cContaOrdenado::Levantar( float Valor )
// {
//	bool Resultado;

//	Saldo = Saldo + LimiteCredito; 
	
//	Resultado = cContaOrdem::Levantar(Valor);  // Chama o Levantar da classe base ( cContaOrdem )

//	Saldo = Saldo - LimiteCredito;
		
//	return Resultado;
		
// }




// Definição da classe cContaPoupanca

char *cContaPoupanca::Descricao = "ContaPoupanca";

cContaPoupanca::cContaPoupanca( int NumConta ) : cContaOrdem( NumConta )
{
	
}


char *cContaPoupanca::GetDescricao()
{
	return Descricao;
}



bool cContaPoupanca::Depositar( float Valor )
{
	if ( Valor >= 20000 )
	{
		Saldo = Saldo + Valor;
		return true;
	}
	else
		return false;
	
}



// Implementação ALTERNATIVA do método Depositar
// bool cContaPoupanca::Depositar( float Valor )
// {
//	if ( Valor >= 20000 ) 
//		return  cContaOrdem::Depositar(Valor);  // Chama o Depositar da classe base ( cContaOrdem )
//  else
//		return false;		
// }

