Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Minha transferência não está funcionando

class Cliente {

    nome;
    saldo = 0;


    depositar(valor) {
        if (valor <= 0 ) {
            return
        }
        this.saldo += valor
    }

    sacar(valor) {
        if (valor > this.saldo) {
            return
        }
        this.saldo -= valor
    }

    transferir(valor, conta ) {
        const valorSacado = this.sacar(valor)
        conta.depositar(valorSacado)
    }
}

const conta1 = new Cliente()
conta1.nome = "Adriel"
conta1.depositar(100)
conta1.transferir(10, conta2)



const conta2 = new Cliente()
conta2.nome = "Gabriela"



console.log(conta1)
console.log(conta2)

me retorna um erro :

conta1.transferir(10, conta2) ^ ReferenceError: Cannot access 'conta2' before initialization

Não estou entendo onde está o erro

3 respostas
solução!

Olá Adriel , tudo bem ? Acredito que o problema esteja em voce usar a "conta2" antes de declara na (const) . Como o sistema le o codigo de cima pra baixo , quando o chega : conta1.transferir(10, conta2) , nao acha o valor : do "conta2" declarado .

class Cliente {

    nome;
    saldo = 0;


    depositar(valor) {
        if (valor <= 0 ) {
            return
        }
        this.saldo += valor
    }

    sacar(valor) {
        if (valor > this.saldo) {
            return
        }
        this.saldo -= valor
    }

    transferir(valor, conta ) {
        const valorSacado = this.sacar(valor)
        conta.depositar(valorSacado)
    }
}

const conta2 = new Cliente()  //correção declarar antes de usa la
conta2.nome = "Gabriela"

const conta1 = new Cliente()
conta1.nome = "Adriel"
conta1.depositar(100)
conta1.transferir(10, conta2)

console.log(conta1)
console.log(conta2)

Espero talvez poder te ajudado , boa sorte e bons estudos .

Já consegui resolver. Éra um erro de organização do código

class Cliente {
    cliente;
    nome;
    saldo = 0;


    depositar(valor) {
        if (valor <= 0 ) {
            return
        }
        this.saldo += valor
    }

    sacar(valor) {
        if (valor > this.saldo) {
            return
        }
        this.saldo -= valor
    }

    transferir(valor, conta ) {
        const valorSacado = this.sacar(valor)
        conta.depositar(valorSacado)
    }
}

const conta1 = new Cliente()
conta1.nome = "Adriel"
conta1.depositar(100)   





const conta2 = new Cliente()
conta2.nome = "Gabriela"


conta1.transferir(10, conta2)

console.log(conta1)
console.log(conta2)

porém, agora está dando outro "erro". O saldo do cliente em que o saldo foi transferido está como "NaN" :

Cliente { nome: 'Adriel', saldo: 90 }
Cliente { nome: 'Gabriela', saldo: NaN }

Achei o erro:

o método, ou comportamento de classe "transferir" estava bugando.

mesmo usando o mesmo código do professor que foi esse :

transferir(valor, conta ) {
        const valorSacado = this.sacar(valor)
        conta.depositar(valorSacado)
    }

no meu código só funcionou quando fiz desse jeito

transferir(valor, conta ) {
        this.sacar(valor)
        conta.depositar(valor)
    }

a diferença entre os codigos e o porquê resolveu o bug eu ainda não sei