Desafio proposto pela Luri, a IA da Alura.
Imagine que você esteja analisando o código de uma aplicação Java e encontra a seguinte classe:
public class Conta { private int numero; private int agencia; private double saldo;
public void deposita(double valor) {
saldo += valor;
}
public void saca(double valor) {
if (valor <= saldo) {
saldo -= valor;
} else {
System.out.println("Saldo insuficiente.");
}
}
public void setNumero(int numero) {
this.numero = numero;
}
public void setAgencia(int agencia) {
this.agencia = agencia;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public int getNumero() {
return numero;
}
public int getAgencia() {
return agencia;
}
public double getSaldo() {
return saldo;
}
}
Levando em consideração o conceito de encapsulamento, qual seria o problema do código anterior ?
A classe Conta não deve ter o método setSaldo
, o método viola o conceito de encapsulamento, pois permite que o saldo da conta seja modificado diretamente de fora da classe, sem passar pelos métodos deposita
e saca
. O encapsulamento visa proteger os dados da classe, garantindo que eles sejam modificados apenas através de métodos controlados, como os métodos deposita
e saca
, que garantem a integridade do saldo da conta.