Olha eu de novo aqui, pro desafio final
Eis que ficou assim:
Model > Usuarios
Cliente.cs
namespace bytebank.Model.Usuarios
{
public class Cliente
{
public int totalDeCliente { get; private set; }
public string nome;
public string cpf;
public string profissao;
public Cliente(string nome, string cpf, string profissao)
{
this.nome = nome;
this.cpf = cpf;
this.profissao = profissao;
totalDeCliente++;
}
}
}
Model > Contas
ContaCorrente.cs
using bytebank.Model.Usuarios;
namespace bytebank.Model.Contas
{
public class ContaCorrente
{
public int totalDeContasCorrente { get; private set; }
private int numeroAgencia;
private string conta;
public Cliente titular;
private double saldo;
public ContaCorrente(int numeroAgencia, string conta, Cliente titular)
{
this.numeroAgencia = numeroAgencia;
this.conta = conta;
this.titular = titular;
this.saldo = 0;
totalDeContasCorrente++;
}
public bool Depositar(double valor)
{
bool podeDepositar = valor > 0;
if (podeDepositar)
{
this.saldo += valor;
return podeDepositar;
}
return podeDepositar;
}
public bool Sacar(double valor)
{
bool podeSacar = valor > 0 && valor <= this.saldo;
if (podeSacar)
{
this.saldo -= valor;
return true;
}
return false;
}
public bool Transferir(double valor, ContaCorrente contaDestino)
{
bool podeTransferir = valor > 0 && valor <= this.saldo;
if (podeTransferir)
{
this.saldo -= valor;
contaDestino.Depositar(valor);
return true;
}
return false;
}
public void GetConta()
{
Console.WriteLine($"--------------------------");
Console.WriteLine($"Dados da conta:");
Console.WriteLine($"Conta: {this.conta}");
Console.WriteLine($"Agência: {this.numeroAgencia}");
Console.WriteLine($"Titular: {this.titular.nome}");
Console.WriteLine($"CPF: {this.titular.cpf}");
Console.WriteLine($"Profissão: {this.titular.profissao}");
Console.WriteLine($"Saldo: {this.saldo}");
Console.WriteLine($"--------------------------");
}
public double GetSaldo()
{
return this.saldo;
}
public void SetSaldo(double saldo)
{
if (saldo > 0)
{
this.saldo = saldo;
}
}
}
}
Ponto de entrada
Program.cs
using bytebank.Model.Contas;
using bytebank.Model.Usuarios;
ContaCorrente contaDoLucas = new ContaCorrente(863, "863146", new Cliente("Lucas Ferreira", "123.456.789-10", "Desenvolvedor"));
contaDoLucas.SetSaldo(0);
contaDoLucas.Depositar(500);
Console.WriteLine($"Saldo da conta do Lucas: {contaDoLucas.GetSaldo()}");
bool sacou = contaDoLucas.Sacar(100);
Console.WriteLine($"Saldo da conta do Lucas: {contaDoLucas.GetSaldo()}");
ContaCorrente contaDaVanderleia = new ContaCorrente(368, "465789", new Cliente("Vanderleia Gomes", "019.876.543-21", "Técnica em Enfermagem"));
Console.WriteLine($"Saldo da conta da Vanderleia: {contaDaVanderleia.GetSaldo()}");
contaDoLucas.Transferir(2100, contaDaVanderleia);
Console.WriteLine($"Saldo da conta do Lucas: {contaDoLucas.GetSaldo()}");
Console.WriteLine($"Saldo da conta da Vanderleia: {contaDaVanderleia.GetSaldo()}");
contaDoLucas.Transferir(100, contaDaVanderleia);
Console.WriteLine($"Saldo da conta do Lucas: {contaDoLucas.GetSaldo()}");
Console.WriteLine($"Saldo da conta da Vanderleia: {contaDaVanderleia.GetSaldo()}");
contaDoLucas.GetConta();
contaDaVanderleia.GetConta();
Console.WriteLine($"Total de contas corrente: {ContaCorrente.totalDeContasCorrente}");
Console.WriteLine($"Total de clientes: {Cliente.totalDeCliente}");