Olá a todos. Nas últimas aulas, o professor tinha falado um pouco sobre regra de negócio e numa situação hipotética em que o número das agências não poderiam ser negativas, foi proposto como solução uma condição no método setter setAgencia mais ou menos assim:
public void setAgencia(int agencia) {
if(numero <= 0) {
System.out.println("Não pode valor negativo");
return;
}
this.agencia = agencia;
}
Mas já nos construtores, aparentemente o padrão é simplesmente atribuir diretamente os valores como abaixo:
public Conta(int agencia, int numero) {
Conta.total++;
this.agencia = agencia;
this.numero = numero;
}
Mas isso permitiria uma atribuição negativa de número de agência. Uma solução seria escrever condições no construtor mas aí estariamos criando redundância de código (pois já existe um setter que escreve essa lógica). Aí eu pensei em chamar os métodos setters no construtor para essa inicialização mas pesquisando um pouco sobre o assunto, vi que a convenção não é essa, e que essa prática seria, na verdade, ser descorajada pois esses métodos poderiam ser sobreescritos antes da inicialização do construtor. Aí fica a dúvida sobre a melhor maneira de aplicar regras de negócio no construtor.
Espero ter conseguido explicar minha dúvida e agradeço a quem comentar!