2
respostas

Como faço para mostrar o valor do #saldo sendo um campo privado?

Boa noite!

Gostaria de saber, como fazer para aparecer o saldo.

Esse é a minha classe:

export class ContaCorrente{
    cliente;
    agencia;

    #saldo = 0;

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

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

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

E esse é o meu código:

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

//Criando Clientes
const cliente1 = new Cliente();
cliente1.nome = "Jhamesson Henriky Amancio";
cliente1.cpf = 11111122233;

const cliente2 = new Cliente();
cliente2.nome = "Paula Prestes Almeida Amancio";
cliente2.cpf = 11122233344;

//Criando Conta Correntes
const conta1 = new ContaCorrente();
conta1.agencia = 1001;
conta1.cliente = cliente1;
conta1.depositar(500);

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

conta1.tranferir(200, conta2);

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

E esse é o meu imput: Imagem da saida no console

2 respostas

Com o # na frente, o saldo será interpretado como uma propriedade privada, isto é, só será visível e só poderá ser acessada de dentro da classe ContaCorrente.

Para testar, você pode exibir o valor incluindo o seguinte código na classe ContaCorrente:

exibirSaldo() {
    console.log(this.#saldo); 
} 

e chamando esse método no index.js:

conta1.exibirSaldo(); 
conta2.exibirSaldo(); 

Mas, na prática, para outras partes do seu código receberem o valor do saldo, é melhor criar um método que retorna o valor do saldo de uma conta.

Substitua o código do método exibirSaldo dentro da classe ContaCorrente por:

obterSaldo() {
    return this.#saldo;
} 

Daí, lá no index.js ou em qualquer outra parte do seu código será possível chamar o método para obter o saldo, por exemplo:

const saldo1 = conta1.obterSaldo();
console.log("Saldo Conta 1: ", saldo1); 

const saldo2 = conta2.obterSaldo();
console.log("Saldo Conta 2: ", saldo2); 

Avançando um pouco nos estudos, a melhor resposta está na aula "4. Acessando Atributos privados / Atividade 3. Getters e Setters" https://cursos.alura.com.br/course/javascritpt-orientacao-objetos/task/72216 em 7m37s.

Na classe ContaCorrente crie o assessor:

get saldo() {
    return this.#saldo;
}

E no index.js exiba o saldo:

console.log("Saldo Conta 1: ", conta1.saldo);
console.log("Saldo Conta 2: ", conta2.saldo);