Class CuentaBancaria

java.lang.Object
model.cuentas.CuentaBancaria
Direct Known Subclasses:
CuentaAhorro, CuentaCorriente, CuentaJuventud, CuentaTerceraEdad

public abstract class CuentaBancaria extends Object
Clase abstracta que representa una cuenta bancaria generica. Contiene los atributos y comportamientos comunes a todos los tipos de cuentas.
Author:
ISC Israel de Jesus Mar Parada
See Also:
  • Field Details

    • numeroCuenta

      protected String numeroCuenta
      Numero unico identificador de la cuenta bancaria.
    • contrasenaHash

      protected String contrasenaHash
      Hash de la contrasena para autenticacion del titular.
    • nombreTitular

      protected String nombreTitular
      Nombre completo del titular de la cuenta.
    • documentoTitular

      protected String documentoTitular
      Documento de identidad (cedula, NIT, pasaporte) del titular.
    • saldoDisponible

      protected BigDecimal saldoDisponible
      Saldo actual disponible en la cuenta.
    • fechaApertura

      protected LocalDateTime fechaApertura
      Fecha y hora de apertura de la cuenta.
    • fechaUltimoAcceso

      protected LocalDateTime fechaUltimoAcceso
      Fecha y hora del ultimo acceso exitoso a la cuenta.
    • intentosFallidos

      protected int intentosFallidos
      Numero de intentos fallidos consecutivos de autenticacion.
    • estaBloqueada

      protected boolean estaBloqueada
      Indica si la cuenta esta bloqueada por seguridad.
    • tasaInteresMensual

      protected BigDecimal tasaInteresMensual
      Tasa de interes mensual aplicable (ej: 0.01 = 1%).
    • cupoDiarioRetiro

      protected BigDecimal cupoDiarioRetiro
      Limite maximo de dinero que se puede retirar por dia.
    • cupoDiarioTransferencia

      protected BigDecimal cupoDiarioTransferencia
      Limite maximo de dinero que se puede transferir por dia.
    • montoRetiradoHoy

      protected BigDecimal montoRetiradoHoy
      Monto total retirado en el dia actual.
    • montoTransferidoHoy

      protected BigDecimal montoTransferidoHoy
      Monto total transferido en el dia actual.
    • cuentasFavoritas

      protected List<String> cuentasFavoritas
      Lista de numeros de cuenta favoritas para transferencias rapidas.
  • Constructor Details

    • CuentaBancaria

      public CuentaBancaria(String numeroCuenta, String nombreTitular, String documentoTitular)
      Constructor para crear una nueva cuenta bancaria con los datos basicos del titular. Inicializa la cuenta con saldo en cero, fecha actual, sin bloqueo, tasa de interes del 1%, cupo diario de retiro de $1,000,000, cupo diario de transferencia de $2,000,000, montos del dia en cero y lista de favoritas vacia.
      Parameters:
      numeroCuenta - Numero unico identificador de la cuenta
      nombreTitular - Nombre completo del titular
      documentoTitular - Documento de identidad del titular
  • Method Details

    • calcularIntereses

      public abstract BigDecimal calcularIntereses()
      Calcula los intereses generados por la cuenta segun su tipo especifico. Cada subclase debe implementar su propia logica de calculo.
      Returns:
      Intereses calculados como valor BigDecimal
    • validarCondicionesEspeciales

      public abstract boolean validarCondicionesEspeciales()
      Valida si la cuenta cumple con las condiciones especiales de su tipo. Ejemplos: CuentaJuventud requiere titular menor de 25 años, CuentaTerceraEdad requiere titular mayor de 60 años.
      Returns:
      true si cumple todas las condiciones especiales, false en caso contrario
    • validarContrasena

      public boolean validarContrasena(String contrasena)
      Valida si la contrasena ingresada coincide con el hash almacenado.
      Parameters:
      contrasena - Contrasena en texto plano ingresada por el usuario
      Returns:
      true si la contrasena es correcta, false en caso contrario
    • registrarAcceso

      public void registrarAcceso()
      Registra un acceso exitoso a la cuenta. Actualiza la fecha y hora del ultimo acceso y reinicia el contador de intentos fallidos a cero.
    • registrarIntentoFallido

      public void registrarIntentoFallido()
      Registra un intento fallido de autenticacion. Incrementa el contador de intentos fallidos. Si alcanza 3 intentos fallidos consecutivos, la cuenta se bloquea automaticamente.
    • puedeRetirar

      public boolean puedeRetirar(BigDecimal monto)
      Verifica si se puede realizar un retiro por el monto especificado. Condiciones: cuenta no bloqueada, saldo suficiente, no exceder cupo diario.
      Parameters:
      monto - Monto que se desea retirar
      Returns:
      true si el retiro es posible, false en caso contrario
    • puedeTransferir

      public boolean puedeTransferir(BigDecimal monto)
      Verifica si se puede realizar una transferencia por el monto especificado. Condiciones: cuenta no bloqueada, saldo suficiente, no exceder cupo diario.
      Parameters:
      monto - Monto que se desea transferir
      Returns:
      true si la transferencia es posible, false en caso contrario
    • retirar

      public void retirar(BigDecimal monto)
      Ejecuta un retiro de dinero desde la cuenta. La operacion solo se realiza si puedeRetirar retorna true. Actualiza el saldo disponible y acumula el monto retirado en el contador diario.
      Parameters:
      monto - Monto a retirar
    • depositar

      public void depositar(BigDecimal monto)
      Ejecuta un deposito de dinero en la cuenta. Incrementa el saldo disponible en el monto especificado. Esta operacion no tiene restricciones de bloqueo ni limites diarios.
      Parameters:
      monto - Monto a depositar
    • transferir

      public void transferir(BigDecimal monto)
      Ejecuta una transferencia de dinero desde esta cuenta hacia otra. La operacion solo se realiza si puedeTransferir retorna true. Actualiza el saldo disponible y acumula el monto transferido en el contador diario. Nota: Este metodo solo descuenta el monto de la cuenta origen. El abono a la cuenta destino debe manejarse por separado.
      Parameters:
      monto - Monto a transferir
    • agregarFavorita

      public void agregarFavorita(String numeroCuenta)
      Agrega una cuenta a la lista de cuentas favoritas del titular. No permite duplicados: si la cuenta ya existe en la lista, no se agrega nuevamente.
      Parameters:
      numeroCuenta - Numero de la cuenta que se desea marcar como favorita
    • getNumeroCuenta

      public String getNumeroCuenta()
      Returns:
      Numero de cuenta
    • setNumeroCuenta

      public void setNumeroCuenta(String numeroCuenta)
      Parameters:
      numeroCuenta - Nuevo numero de cuenta
    • getContrasenaHash

      public String getContrasenaHash()
      Returns:
      Hash de la contrasena almacenado
    • setContrasenaHash

      public void setContrasenaHash(String contrasenaHash)
      Parameters:
      contrasenaHash - Nuevo hash de contrasena
    • getNombreTitular

      public String getNombreTitular()
      Returns:
      Nombre completo del titular
    • setNombreTitular

      public void setNombreTitular(String nombreTitular)
      Parameters:
      nombreTitular - Nuevo nombre del titular
    • getDocumentoTitular

      public String getDocumentoTitular()
      Returns:
      Documento de identidad del titular
    • setDocumentoTitular

      public void setDocumentoTitular(String documentoTitular)
      Parameters:
      documentoTitular - Nuevo documento del titular
    • getSaldoDisponible

      public BigDecimal getSaldoDisponible()
      Returns:
      Saldo actual de la cuenta
    • setSaldoDisponible

      public void setSaldoDisponible(BigDecimal saldoDisponible)
      Parameters:
      saldoDisponible - Nuevo saldo
    • getFechaApertura

      public LocalDateTime getFechaApertura()
      Returns:
      Fecha y hora de apertura
    • setFechaApertura

      public void setFechaApertura(LocalDateTime fechaApertura)
      Parameters:
      fechaApertura - Nueva fecha de apertura
    • getFechaUltimoAcceso

      public LocalDateTime getFechaUltimoAcceso()
      Returns:
      Fecha y hora del ultimo acceso
    • setFechaUltimoAcceso

      public void setFechaUltimoAcceso(LocalDateTime fechaUltimoAcceso)
      Parameters:
      fechaUltimoAcceso - Nueva fecha de ultimo acceso
    • getIntentosFallidos

      public int getIntentosFallidos()
      Returns:
      Numero de intentos fallidos consecutivos
    • setIntentosFallidos

      public void setIntentosFallidos(int intentosFallidos)
      Parameters:
      intentosFallidos - Nueva cantidad de intentos fallidos
    • isEstaBloqueada

      public boolean isEstaBloqueada()
      Returns:
      true si esta bloqueada, false si esta activa
    • setEstaBloqueada

      public void setEstaBloqueada(boolean estaBloqueada)
      Parameters:
      estaBloqueada - true para bloquear, false para desbloquear
    • getTasaInteresMensual

      public BigDecimal getTasaInteresMensual()
      Returns:
      Tasa de interes mensual (ej: 0.01 = 1%)
    • setTasaInteresMensual

      public void setTasaInteresMensual(BigDecimal tasaInteresMensual)
      Parameters:
      tasaInteresMensual - Nueva tasa de interes
    • getCupoDiarioRetiro

      public BigDecimal getCupoDiarioRetiro()
      Returns:
      Limite maximo de retiro por dia
    • setCupoDiarioRetiro

      public void setCupoDiarioRetiro(BigDecimal cupoDiarioRetiro)
      Parameters:
      cupoDiarioRetiro - Nuevo limite de retiro diario
    • getCupoDiarioTransferencia

      public BigDecimal getCupoDiarioTransferencia()
      Returns:
      Limite maximo de transferencia por dia
    • setCupoDiarioTransferencia

      public void setCupoDiarioTransferencia(BigDecimal cupoDiarioTransferencia)
      Parameters:
      cupoDiarioTransferencia - Nuevo limite de transferencia diaria
    • getMontoRetiradoHoy

      public BigDecimal getMontoRetiradoHoy()
      Returns:
      Monto total retirado en el dia actual
    • setMontoRetiradoHoy

      public void setMontoRetiradoHoy(BigDecimal montoRetiradoHoy)
      Parameters:
      montoRetiradoHoy - Nuevo total de retiros del dia
    • getMontoTransferidoHoy

      public BigDecimal getMontoTransferidoHoy()
      Returns:
      Monto total transferido en el dia actual
    • setMontoTransferidoHoy

      public void setMontoTransferidoHoy(BigDecimal montoTransferidoHoy)
      Parameters:
      montoTransferidoHoy - Nuevo total de transferencias del dia
    • getCuentasFavoritas

      public List<String> getCuentasFavoritas()
      Returns:
      Lista de cuentas favoritas
    • setCuentasFavoritas

      public void setCuentasFavoritas(List<String> cuentasFavoritas)
      Parameters:
      cuentasFavoritas - Nueva lista de cuentas favoritas
    • toString

      public String toString()
      Devuelve una representacion textual resumida de la cuenta bancaria. Formato: "Cuenta: [numero] | Titular: [nombre] | Saldo: $[saldo]"
      Overrides:
      toString in class Object
      Returns:
      Cadena con la informacion principal de la cuenta