Class CuentaBancaria
java.lang.Object
model.cuentas.CuentaBancaria
- Direct Known Subclasses:
CuentaAhorro, CuentaCorriente, CuentaJuventud, CuentaTerceraEdad
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 Summary
FieldsModifier and TypeFieldDescriptionprotected StringHash de la contrasena para autenticacion del titular.Lista de numeros de cuenta favoritas para transferencias rapidas.protected BigDecimalLimite maximo de dinero que se puede retirar por dia.protected BigDecimalLimite maximo de dinero que se puede transferir por dia.protected StringDocumento de identidad (cedula, NIT, pasaporte) del titular.protected booleanIndica si la cuenta esta bloqueada por seguridad.protected LocalDateTimeFecha y hora de apertura de la cuenta.protected LocalDateTimeFecha y hora del ultimo acceso exitoso a la cuenta.protected intNumero de intentos fallidos consecutivos de autenticacion.protected BigDecimalMonto total retirado en el dia actual.protected BigDecimalMonto total transferido en el dia actual.protected StringNombre completo del titular de la cuenta.protected StringNumero unico identificador de la cuenta bancaria.protected BigDecimalSaldo actual disponible en la cuenta.protected BigDecimalTasa de interes mensual aplicable (ej: 0.01 = 1%). -
Constructor Summary
ConstructorsConstructorDescriptionCuentaBancaria(String numeroCuenta, String nombreTitular, String documentoTitular) Constructor para crear una nueva cuenta bancaria con los datos basicos del titular. -
Method Summary
Modifier and TypeMethodDescriptionvoidagregarFavorita(String numeroCuenta) Agrega una cuenta a la lista de cuentas favoritas del titular.abstract BigDecimalCalcula los intereses generados por la cuenta segun su tipo especifico.voiddepositar(BigDecimal monto) Ejecuta un deposito de dinero en la cuenta.intbooleanbooleanpuedeRetirar(BigDecimal monto) Verifica si se puede realizar un retiro por el monto especificado.booleanpuedeTransferir(BigDecimal monto) Verifica si se puede realizar una transferencia por el monto especificado.voidRegistra un acceso exitoso a la cuenta.voidRegistra un intento fallido de autenticacion.voidretirar(BigDecimal monto) Ejecuta un retiro de dinero desde la cuenta.voidsetContrasenaHash(String contrasenaHash) voidsetCuentasFavoritas(List<String> cuentasFavoritas) voidsetCupoDiarioRetiro(BigDecimal cupoDiarioRetiro) voidsetCupoDiarioTransferencia(BigDecimal cupoDiarioTransferencia) voidsetDocumentoTitular(String documentoTitular) voidsetEstaBloqueada(boolean estaBloqueada) voidsetFechaApertura(LocalDateTime fechaApertura) voidsetFechaUltimoAcceso(LocalDateTime fechaUltimoAcceso) voidsetIntentosFallidos(int intentosFallidos) voidsetMontoRetiradoHoy(BigDecimal montoRetiradoHoy) voidsetMontoTransferidoHoy(BigDecimal montoTransferidoHoy) voidsetNombreTitular(String nombreTitular) voidsetNumeroCuenta(String numeroCuenta) voidsetSaldoDisponible(BigDecimal saldoDisponible) voidsetTasaInteresMensual(BigDecimal tasaInteresMensual) toString()Devuelve una representacion textual resumida de la cuenta bancaria.voidtransferir(BigDecimal monto) Ejecuta una transferencia de dinero desde esta cuenta hacia otra.abstract booleanValida si la cuenta cumple con las condiciones especiales de su tipo.booleanvalidarContrasena(String contrasena) Valida si la contrasena ingresada coincide con el hash almacenado.
-
Field Details
-
numeroCuenta
Numero unico identificador de la cuenta bancaria. -
contrasenaHash
Hash de la contrasena para autenticacion del titular. -
nombreTitular
Nombre completo del titular de la cuenta. -
documentoTitular
Documento de identidad (cedula, NIT, pasaporte) del titular. -
saldoDisponible
Saldo actual disponible en la cuenta. -
fechaApertura
Fecha y hora de apertura de la cuenta. -
fechaUltimoAcceso
Fecha y hora del ultimo acceso exitoso a la cuenta. -
intentosFallidos
protected int intentosFallidosNumero de intentos fallidos consecutivos de autenticacion. -
estaBloqueada
protected boolean estaBloqueadaIndica si la cuenta esta bloqueada por seguridad. -
tasaInteresMensual
Tasa de interes mensual aplicable (ej: 0.01 = 1%). -
cupoDiarioRetiro
Limite maximo de dinero que se puede retirar por dia. -
cupoDiarioTransferencia
Limite maximo de dinero que se puede transferir por dia. -
montoRetiradoHoy
Monto total retirado en el dia actual. -
montoTransferidoHoy
Monto total transferido en el dia actual. -
cuentasFavoritas
-
-
Constructor Details
-
CuentaBancaria
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 cuentanombreTitular- Nombre completo del titulardocumentoTitular- Documento de identidad del titular
-
-
Method Details
-
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
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
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
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
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
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
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
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
- Returns:
- Numero de cuenta
-
setNumeroCuenta
- Parameters:
numeroCuenta- Nuevo numero de cuenta
-
getContrasenaHash
- Returns:
- Hash de la contrasena almacenado
-
setContrasenaHash
- Parameters:
contrasenaHash- Nuevo hash de contrasena
-
getNombreTitular
- Returns:
- Nombre completo del titular
-
setNombreTitular
- Parameters:
nombreTitular- Nuevo nombre del titular
-
getDocumentoTitular
- Returns:
- Documento de identidad del titular
-
setDocumentoTitular
- Parameters:
documentoTitular- Nuevo documento del titular
-
getSaldoDisponible
- Returns:
- Saldo actual de la cuenta
-
setSaldoDisponible
- Parameters:
saldoDisponible- Nuevo saldo
-
getFechaApertura
- Returns:
- Fecha y hora de apertura
-
setFechaApertura
- Parameters:
fechaApertura- Nueva fecha de apertura
-
getFechaUltimoAcceso
- Returns:
- Fecha y hora del ultimo acceso
-
setFechaUltimoAcceso
- 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
- Returns:
- Tasa de interes mensual (ej: 0.01 = 1%)
-
setTasaInteresMensual
- Parameters:
tasaInteresMensual- Nueva tasa de interes
-
getCupoDiarioRetiro
- Returns:
- Limite maximo de retiro por dia
-
setCupoDiarioRetiro
- Parameters:
cupoDiarioRetiro- Nuevo limite de retiro diario
-
getCupoDiarioTransferencia
- Returns:
- Limite maximo de transferencia por dia
-
setCupoDiarioTransferencia
- Parameters:
cupoDiarioTransferencia- Nuevo limite de transferencia diaria
-
getMontoRetiradoHoy
- Returns:
- Monto total retirado en el dia actual
-
setMontoRetiradoHoy
- Parameters:
montoRetiradoHoy- Nuevo total de retiros del dia
-
getMontoTransferidoHoy
- Returns:
- Monto total transferido en el dia actual
-
setMontoTransferidoHoy
- Parameters:
montoTransferidoHoy- Nuevo total de transferencias del dia
-
getCuentasFavoritas
-
setCuentasFavoritas
-
toString
-