public class Cuenta {
private int numero;
private int agencia;
private double saldo;
public void deposita(double valor) {
saldo += valor;
}
public void retira(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;
}
}
Considerando el concepto de encapsulamiento, ¿qué problema presenta el código anterior?
- Respuesta: El problema principal de encapsulamiento en el código presentado es la existencia del método public void setSaldo(double saldo) El encapsulamiento es un pilar fundamental de la programación orientada a objetos, y tiene como objetivo ocultar los detalles de implementación de un objeto, exponiendo solo la interfaz necesaria para interactuar con él. Al tener un método público que permite modificar directamente el saldo de una cuenta, se está rompiendo este principio, ya que se está exponiendo y permitiendo la manipulación directa de un atributo interno de la clase.
Lo correcto sería eliminar este método setter y, en su lugar, utilizar únicamente los métodos deposita(double valor) y retira(double valor) para realizar las operaciones de depósito y retiro, manteniendo el saldo como una variable de instancia privada. De esta forma, se preserva el encapsulamiento y se garantiza la integridad de los datos de la cuenta.