2
respuestas

[Duda] Método con texto

Buenas noches, siguiendo las indicaciones del instructor yo varié un poco el método de retirar, depositar y transferir dinero, cuando no había sobrescrito los métodos en las clases hijas no presentaba ningún problema, pero al sobrescribir el método para introducir las comisiones, al ejecutar me sale "undefined" no he logrado dar con el chiste... alguna ayuda seria muy provechosa.

método depositar:

depositoACuenta(valor){
        let msg = '';
        if(valor<=0){
            msg = "Digíte una cantidad válida"; 
        } else {
            this.#saldo += valor;
            msg = `Su nuevo saldo es: $${this.#saldo}`;
        }
        return msg;
    }

método retirar:

retiroDeCuenta(valor, comision){
        let msg = '';
        valor = valor*(1+comision/100);
        if(valor>=this.#saldo){
            msg = "Su saldo es insuficiente para esta operacion";
        } else {
            this.#saldo -= valor;
            msg = `Su nuevo saldo es: $${this.#saldo}`;
        }
        return msg;
    }

esto lo corro en el index.js

cuentaLeonardo.depositoACuenta(2500);
cuentaMauricio.depositoACuenta(1200);
const opeRetirar = cuentaLeonardo.retiroDeCuenta(500);
const opeRetirar2 = cuentaMauricio.retiroDeCuenta(500);
console.log(cuentaMauricio.verSaldo());    
console.log(cuentaLeonardo.verSaldo());
console.log(opeRetirar);
console.log(opeRetirar2);

este es el resultado del powerShell

PS C:\Users\USER.C408LA\OneDrive\Documentos\JOB\Cursos\Alura-ONE\JavaScript\Aula4-POO-Int-Her> node index.js
675
1990     
undefined
undefined
PS C:\Users\USER.C408LA\OneDrive\Documentos\JOB\Cursos\Alura-ONE\JavaScript\Aula4-POO-Int-Her> node index.js
675
1990
undefined
Su nuevo saldo es: $675
PS C:\Users\USER.C408LA\OneDrive\Documentos\JOB\Cursos\Alura-ONE\JavaScript\Aula4-POO-Int-Her>  

en la primera parte los dos métodos están sobrescritos, en el segundo resultado solo esta sobrescrito las cuentas de ahorro. y ahí si funciona el método. Mi pregunta concreta es: ¿Cómo podrí usar la sobrescritura y que aun se vean los mensajes?

2 respuestas

¡Hola Jorge!

Parece que el problema se encuentra en la variable msg dentro del método retiroDeCuenta. Al sobrescribir el método, no estás asignando ningún valor a msg cuando el saldo es insuficiente, lo que hace que la función no devuelva nada y aparezca undefined.

Para solucionar esto, puedes agregar un mensaje de error en caso de que el saldo sea insuficiente y devolverlo en la variable msg. Por ejemplo:

retiroDeCuenta(valor, comision){
    let msg = " '';
    valor = valor*(1+comision/100);
    if(valor>=this.#saldo){
        msg = "Su saldo es insuficiente para esta operacion";
    } else {
        this.#saldo = valor;
        msg = `Su nuevo saldo es: $${this.#saldo}`;
    }
    return msg;
}

De esta forma, si el saldo es insuficiente, el mensaje de error se asignará a msg y se devolverá correctamente.

Déjame saber si esta solución te ayudó. ¡En caso de seguir con dificultades, no dudes en preguntarnos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!

Mariana consulta: con esto

 else {
        this.#saldo = valor;
        msg = `Su nuevo saldo es: $${this.#saldo}`;
    }

no estariamos haciendo que this#saldo sea igual al valor del retiro? cuando en realidad, entiendo, se quiere mostrar el saldo luego de: primero comprobar que haya saldo suficiente y entonces restarle el retiro.

Saludos