A dúvida em questão é mais do tipo conceitual do que um problema real. Durante a explicação, é apresentado o conceito dos "getters e setters", mas também é dito que, no exemplo dado, não haveria a necessidade de se utilizar um metodo setSaldo()
, uma vez que os métodos deposita()
, saca()
e transfere()
já realizam as alterações nos valores do atributo "saldo".
- Métodos originais:
public void deposita(double valor) {
this.saldo += valor;
}
public boolean saca(double valor) {
if (this.saldo >= valor) {
this.saldo -= valor;
return true;
}
return false;
}
public boolean transfere(double valor, Conta destino) {
if (this.saldo >= valor) {
this.saca(valor);
destino.deposita(valor);
return true;
}
return false;
}
Entretanto, podemos, assim como foi feito com o metodo transfere()
, que internamente chama os metodos deposita()
, saca()
, chamar os metodos get e set da classe Conta, de forma interna nos outros métodos:
- Métodos modificados (testados e funcionando):
public void deposita(double valor) {
this.setSaldo(this.getSaldo() + valor);
}
public boolean saca(double valor) {
if (this.getSaldo() >= valor) {
this.setSaldo(this.getSaldo() - valor);
return true;
}
return false;
}
public boolean transfere(double valor, Conta destino) {
if (this.getSaldo() >= valor) {
this.saca(valor);
destino.deposita(valor);
return true;
}
return false;
}
A minha duvida com relação a isso é o seguinte: No que diz respeito ao paradigma de Orientação a Objetos e a desempenho de código, essa abordagem de uso dos getters e setters seria vista como uma boa ou uma má prática de programação?