Eu aproveitei da validação que o método Sacar tem para deixar mais limpo o método de Transferir. O ideal seria lançar uma exceção, mas o retorno booleano ajudou a validar.
public class ContaCorrente
{
public string titular;
public string numeroAgencia;
public string numeroConta;
public double saldo;
public bool Sacar(double valor)
{
if (this.saldo < valor)
{
return false;
}
this.saldo -= valor;
return true;
}
public void Depositar(double valor)
{
this.saldo += valor;
}
public bool Transferir(double valor, ContaCorrente contaDestino)
{
bool sucesso = this.Sacar(valor);
if (!sucesso)
{
return false;
}
contaDestino.Depositar(valor);
return true;
}
}