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

Saldo não está privado

Quando defino o saldo chamando "conta2._saldo = 30000" o saldo é alterado e não recebo a mensagem de que ele só possui um acessor getter.

4 respostas

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 conta1 = new contaCorrente(); conta1.agencia = 1001; conta1.cliente = cliente1; conta1.depositar(500); conta1.sacar(300);

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

conta1.transferir(200, conta2);

conta2._saldo = 30000 console.log(conta2);

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

export class contaCorrente { agencia; _cliente;

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

get cliente() {
    return this._cliente;
}

saldo = 0;

get saldo() {
    return this._saldo;
}

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

depositar(valor) {
    if(valor > 0){
        this._saldo += valor;
        return valor
    }
}

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

}

solução!

Olá, Niágara, tudo bem?

O problema é que na sua classe contaCorrente, você definiu a propriedade saldo sem o underline _, assim:

    saldo = 0;

Então utilizando a convenção, devemos declará-la assim:

    _saldo = 0;

E apenas o getter terá o nome saldo, sem o underline _.

A mensagem de erro que aparece ao tentar alterar o saldo da conta aparece se você escrever um comando como conta2.saldo = 30000, com o saldo sem underline, ou seja, quando tentamos alterar o getter.

Se você executar conta2._saldo = 30000, a propriedade privada (por convenção) realmente será alterada, e por esse motivo o instrutor diz que não devemos utilizá-las fora de suas classes.

Espero ter ajudado! Abraços e bons estudos :)

Ah perfeito!! Muito obrigada :)