Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] getters y setters - cuenta

Buenos días,

Tengo una duda respecto a los getters y setters de la clase Cuenta. En el código solo se colocó el comentario //getters y setters, lo cual me hace asumir que se generaron métodos get y set para los atributos titular y saldo.

Mi consulta es específicamente sobre si es correcto tener un setSaldo() en la clase Cuenta. Entiendo que, siguiendo el principio de encapsulamiento, no todos los atributos deberían tener necesariamente sus métodos getter y setter. En este caso, considero que el atributo saldo debería mantenerse privado y no tener un método setSaldo(), para evitar que se pueda modificar directamente desde otra clase. Lo ideal sería que los únicos métodos que alteren el saldo sean los métodos públicos retirar() y depositar().

En cuanto a la inicialización del saldo, tal vez lo más adecuado sea hacerlo mediante un constructor, sin necesidad de un setSaldo().

¿Podrían ayudarme confirmando si esta forma de razonar es correcta?

Gracias de antemano por su ayuda.

1 respuesta

¡Hola, Susan, espero que estés bien!

Tu razonamiento sobre los getters y setters en la clase Cuenta es muy acertado. En programación orientada a objetos, el encapsulamiento es un principio clave que nos ayuda a proteger los datos dentro de una clase. Al mantener el atributo saldo privado y no proporcionar un método setSaldo(), estás asegurando que el saldo solo pueda ser modificado a través de métodos controlados como retirar() y depositar(). Esto es beneficioso porque permite manejar las reglas de negocio dentro de estos métodos, como verificar si hay suficiente saldo antes de realizar un retiro.

Inicializar el saldo a través de un constructor también es una práctica común y recomendada. De esta manera, puedes establecer un saldo inicial cuando se crea una instancia de Cuenta, sin necesidad de exponer un setter que podría permitir cambios no controlados.

Aquí tienes un ejemplo de cómo podrías implementar esto:

public class Cuenta {

  private String titular;
  private double saldo;

  public Cuenta(String titular, double saldoInicial) {
    this.titular = titular;
    this.saldo = saldoInicial;
  }

  public double getSaldo() {
    return saldo;
  }

  public void retirar(double valor) {
    if (valor <= 0) {
      System.out.println("El valor debe ser mayor que cero");
    } else if (saldo >= valor) {
      saldo -= valor;
      System.out.println("Retiro realizado con éxito. Saldo actual: " + saldo);
    } else {
      System.out.println("Saldo insuficiente.");
    }
  }

  public void depositar(double valor) {
    if (valor > 0) {
      saldo += valor;
      System.out.println("Depósito realizado con éxito. Saldo actual: " + saldo);
    } else {
      System.out.println("El valor debe ser mayor que cero");
    }
  }

  // Otros getters y métodos según sea necesario
}

Espero que esto te ayude a confirmar tus ideas y a seguir avanzando en tu aprendizaje de la programación orientada a objetos. ¡Espero haber ayudado y buenos estudios!