//using _05_ByteBank; //Informando que está usando as classes inseridas dentro do 05-ByteBank
//Não precisa mais informar que está usando pois agora ele é ujma namespace
namespace _07_ByteBank //Tudo dentro do namespace _05_ByteBank pertence a _05_ByteBank
{
public class ContaCorrente
{
public Cliente Titular
//public Cliente Titular // Cliente _titular não tem necessidade de ser privado
{
get;
/*{
return _titular;
}*/
set;
/*{
_titular = value;
}*/
}
public static int Total_contas_criadas{ get; private set; } //Static - Compartilhado a todos os objetos dessa classe, é uma característica da própria classe
private int _numero;
public int Numero
{
get
{
System.Console.WriteLine("\n\nNúmero da conta válido! ");
return _numero;
}
set
{
if (value <= 0)
{
System.Console.WriteLine("\n\nNúmero da conta inválido! ");
return;
}
_numero = value;
}
}
// Quando não coloca nada o valor default que vem já é 0, podemos atribuir valores padrões como o 100, mas quando o usuário mudar na linha de código, ele mudará
private int _agencia;
public int Agencia
{
get
{
System.Console.WriteLine("\n\nNúmero da agência válido! ");
return _agencia;
}
set
{
if (value < 0)
{
System.Console.WriteLine("\n\nNúmero da agência inválido! ");
return;
}
_agencia = value;
}
}
private double _saldo = 100; //Método privado
//value é utilizado dentro do set
public double Saldo //Propriedade
{
get
{
return _saldo;
}
set
{
if (value < 0)
{
return;
}
_saldo = value; //_saldo ... Quando tiver o underline na frente significa que se refere a um método privado
}
}
/* public void SetSaldo(double saldo) //Definir
{
if (saldo < 0)
{
return;
}
this.saldo = saldo;
}
public double GetSaldo() //Obter
{//É um método quando abre e fecha parentese
return saldo;
}*/
//Construtor
public ContaCorrente(int _numero, int _agencia) //Será obrigado preencher o numero e a agencia
{
Agencia = _agencia;
Numero = _numero;
Total_contas_criadas++;
}
public bool Sacar(double valor) //Nome de função tem sempre que ter a primeira letra em maiusculo -> Sacar
{
if (this._saldo < valor) //this, apontar o saldo
{
return false; //Console.WriteLine("Seu saldo é insuficiente!");
}
else
{
this._saldo -= valor; // foi subtraído o valor do saldo
return true; //Console.WriteLine("Saque realizado com sucesso!");
}
}
public void Depositar(double valor) // Void, função sem retorno
{
this._saldo += valor; //saldo receberá mais um valor (incremento)
}
public bool Transferir(double valor, ContaCorrente contaDestino)
{
if (this._saldo < valor)
{
return false;
}
else
{
this._saldo -= valor;
contaDestino.Depositar(valor); //Caso coloque algum valor após o returno dará inválido, pois já não faz parte do valor retornado
return true;
}
}
}
}