Quero entender as vantages, quando utilizar ou nao.
Quero entender as vantages, quando utilizar ou nao.
Opa, Guilherme. Beleza?
É possível criar várias sobrecargas de construtores em uma classe, assim como podemos criar várias sobrecargas de métodos.
Podemos ter um método RealizarTransferencia
com uma data de agendamento:
public void RealizarTransferencia(double valor, ContaCorrente destino, DateTime data)
{
...
}
Mas, para realizar a tranferência imediatamente, o argumento data
não importa, será a data atual. Então podemos criar a sobrecarga sem este argumento:
public void RealizarTransferencia(double valor, ContaCorrente destino)
{
...
}
Como a lógica de transferência já foi escrita na sobrecarga mais genérica, com mais argumentos, o mais correto é chamar a sobrecarga mais completa a partir da simplificada:
public void RealizarTransferencia(double valor, ContaCorrente destino)
{
RealizarTransferencia(valor, destino, DateTime.Now);
}
O mesmo conceito se aplica com construtores!Podemos ter um construtor com mais opções (ContaCorrente
com número, agência e saldoInicial) e outro com menos(só o número e agência):
public ContaCorrente(int numero, int agencia)
{
Numero = numero;
Agencia = agencia;
}
public ContaCorrente(int numero, int agencia, double saldoInicial)
{
Numero = numero;
Agencia = agencia;
Depositar(saldoInicial);
}
Perceba que estamos repetindo a lógica das atribuições! Não seria melhor centralizar isto em apenas um lugar? Então, assim como nas sobrecargas de métodos, o construtor com menos argumentos pode chamar o construtor mais completo:
public ContaCorrente(int numero, int agencia) : this(numero, agencia, 0)
{
// codigo executado após o construtor chamado com "this(numero, agencia, 0)"
}
public ContaCorrente(int numero, int agencia, double saldoInicial)
{
Numero = numero;
Agencia = agencia;
Depositar(saldoInicial);
}
O que você acha? Resolvi sua dúvida?
Abs.
Resolveu sim, muito obrigado Guilherme.