3
respostas

O saque é feito mas o depósito não

Index.js

import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";

const cliente1 = new Cliente();
    cliente1.nome = "Ricardo"; 
    cliente1.cpf = "11122233309";


const cliente2 = new Cliente();
    cliente2.nome = "Alice";
    cliente2.cpf = "88822233309";


const contaCorrenteRicardo = new ContaCorrente();
    contaCorrenteRicardo.agencia = 1001;
    contaCorrenteRicardo.cliente = cliente1;
    const conta1 = contaCorrenteRicardo;



const conta2 = new ContaCorrente();
conta2.cliente = cliente2;
conta2.agencia = 102;

contaCorrenteRicardo.depositar(500);

contaCorrenteRicardo.transferir(100, conta2);
console.log(conta1);
console.log(conta2);

ContaCorrente.js

export class ContaCorrente {
    agencia;
    cliente;

    // #saldo = 0 https://github.com/tc39/proposal-class-fields#private-fields
    _saldo = 0;


    sacar(valor){

        if(this._saldo >= valor){

            this._saldo -= valor;
            return console.log(`Valor sacado: ${valor}\n`);

        } else if(this._saldo <= valor){

            console.log("erro");

        }
    }

    depositar(valor){

        if(valor > 0){

            this._saldo += valor;
        }
    }

    transferir(valor, conta){

        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);

    }
}
3 respostas

OBS: Agora o saldo da conta que recebe a transferência está dando como NaN.

index.js

import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";

const cliente1 = new Cliente();
    cliente1.nome = "Ricardo"; 
    cliente1.cpf = 11122233309;


 const cliente2 = new Cliente();
     cliente2.nome = "Alice";
     cliente2.cpf = 88822233309;


const contaCorrenteRicardo = new ContaCorrente();
    contaCorrenteRicardo.agencia = 1001;
    contaCorrenteRicardo.cliente = cliente1;
    contaCorrenteRicardo.depositar(500);
console.log("Account before the withdraw: \n", contaCorrenteRicardo);


const conta2 = new ContaCorrente();
    conta2.cliente = cliente2;
    conta2.agencia = 102;

contaCorrenteRicardo.transferir(200, conta2);

console.log("Account after the withdraw: \n", contaCorrenteRicardo);
console.log("The account that has received the deposit: \n", conta2);

ContaCorrente.js

export class ContaCorrente {
    agencia;
    cliente;

    // #saldo = 0 https://github.com/tc39/proposal-class-fields#private-fields
    _saldo = 0;


    sacar(valor){

        if(this._saldo >= valor){

            this._saldo -= valor;
            return console.log(`\nValor sacado: ${valor}\n`);

        }
    }

    depositar(valor){

        if(valor <= 0){

            return;
        };
        this._saldo += valor;

    }

    transferir(valor, conta){

        const valorSacado = this.sacar(valor);
        conta.depositar(valorSacado);

    }
}

Cliente.js

export class Cliente {
    nome;
    cpf;
}

Como vai Carlos? Espero que bem!

Ali na classe Conta em sacar, há um erro quando se use o return. Por algum motivo, o programa deixa de retornar o valor, e acredito que o motivo deva ser o console.log(), porque testei apenas retornando o valor e funcionou normalmente. Da seguinte forma:

    sacar(valor){

        if(this._saldo >= valor){

            this._saldo -= valor;
            return console.log(`\nValor sacado: ${valor}\n`);

        }
    }

Fiz um exemplo usando console.log():

    testeRetorno(increaseAge){
        if (this.age >= 18){
            this.age += increaseAge;
            return console.log(`This is your increased age ${increaseAge}`);
        }
    }
}

const person = new Test();
person.name = 'Carlos';
person.age = 18;
person.testeRetorno(10);
console.log(person);

Veja que quando retorno um console.log(), o valor levado em consideração é apenas o que foi passado pelo parâmetro `increaseAge`, a partir disto, acredito ser razoável dizer que não deve ser uma boa prática retornar comandos que printam na tela.

Consegui!

Mas e se eu quisesse retornar algo pro usuário como uma mensagem? Seria fora do método de saque?