Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não consigo fazer o depósito na Conta Salário

Na aula o instrutor faz um depósito de 100 na Conta Salário, porem quando faço o log da conta no console o fica assim => _saldo: 0

index:

import {Cliente} from "./Cliente.js";
import {ContaCorrente} from "./ContaCorrente.js";
import {ContaPoupanca} from "./ContaPoupanca.js";
import {Conta} from "./Conta.js";
import { ContaSalario } from "./ContaSalario.js";

const cliente1 = new Cliente("Ricardo", 11122233309);

const contaPoupanca = new ContaPoupanca(50, cliente1, 1001);
const contaCorrenteRicardo = new ContaCorrente(cliente1, 1001);
const contaSalario = new ContaSalario(cliente1);

    contaSalario.depositar(100);

console.log(contaSalario);

Conta.js

//Classe abstrata
export class Conta {
    constructor(saldoInicial, cliente, agencia) {

        if (this.constructor == Conta){
            throw new Error("Voce não deveria instanciar um objeto do tipo conta diretamente pois essa é uma classe abstrata.\n");
        }

        this._saldo = saldoInicial;
        this._cliente = cliente;
        this._agencia = agencia;

    }

    set cliente(novoValor) {
        if (novoValor instanceof Cliente) {
            this._cliente = novoValor;
        }
    }

    get cliente() {
        return this._cliente;
    }

    get saldo() {
        return this._saldo;
    }

    //metodo abstrato
    sacar(valor) {
        throw new Error("O método Sacar da conta é abstrato.");
    }

    _sacar(valor, taxa){
        const valorSacado = taxa * valor;
        if (this._saldo >= valorSacado) {
            this._saldo -= valorSacado;
            return valorSacado;
        }

        return 0;
    }

    depositar(valor) {
        if (valor <= 100) 
        {
            return;
        }
        this._saldo += valor;
    }

    tranferir(valor, conta) {

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

    }
}
import { Conta } from './Conta.js';

export class ContaSalario extends Conta {
    constructor(cliente){
        super(0, cliente, 100);
    }

}
1 resposta
solução!

Oi Carlos, tudo bom?

O que está acontecendo é um pequeno erro na lógica do depositar. Veja como está sua função:

depositar(valor) {
   if (valor <= 100) 
   {
      return;
   }
   this._saldo += valor;
}

Você está fazendo uma verificação se 100 é maior ou igual ao valor recebido. Mas, você está passando 100 como valor. Então, 100 é maior ou igual a 100, portanto ele entra nessa verificação e dá um return, ou seja, sai da função, sem adicionar o valor ao saldo.

Para arrumar isso, você pode tirar o sinal de igual ( = ) e deixar apenas o <, dessa forma:

depositar(valor) {
   if (valor < 100) 
   {
      return;
   }
   this._saldo += valor;
}

Agora, 100 não é maior que 100. Essa informação retornará falso e o programa rodará como o esperado.

Espero ter ajudado =) Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software