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

Exercício 05

Fiquei com uma dúvida ao desenvolver esse exercício!

'Crie uma função chamada 'mostrarSaldo' que aceita o objeto cliente como parâmetro e imprime no console o nome do cliente e o saldo da sua conta utilizando this para acessar as propriedades do objeto.'

Diferentemente das funcões do objeto contaBancária, a solicitação para criar essa função usando o this não venho 'aninhada' a nenhum dos dois objetos, logo, me confundi. Se é para usar this. significa que essa função deve ser criada como método de um objeto específico, ou seja, dentro de um deles, certo?

Outro detalhe: criando a função 'mostrarSaldo' dentro do objeto cliente, por exemplo, não faz muito sentido passar 'cliente' como argumento para dentro da função. Isso também me confundiu. Com isso fiz algo dessa forma:

const cliente = {
    nome: 'Rosemberg José',
    conta: contaBancaria,
    mostrarSaldo: function () {
        console.log(this.conta.titular);
        console.log(this.conta.saldo);
    }
}

Fora dele sim, eu passaria como argumento.

function mostrarSaldo (cliente) {
    console.log(cliente.conta.titular);
    console.log(cliente.conta.saldo);
}

Mas como eu disse o enunciado me pegou demais! A ponto de não saber ao certo o que fazer.

3 respostas
solução!

Olá, Rosemberg! Como vai?

A função mostrarSaldo() fica melhor implementada fora da classe cliente. Pensando de maneira orientada a objetos, um cliente não tem como função mostrar o saldo, isso é uma operação externa a ele. Então uma solução pode ser assim:

const contaBancaria = {
    titular: "João",
    saldo: 1000,
    depositar: function(valor) {
        this.saldo += valor;
    },
    sacar: function(valor) {
        if (valor <= this.saldo) {
            this.saldo -= valor;
        } else {
            console.log("Saldo insuficiente para saque.");
        }
    }
};

const cliente = {
    nome: "Carlos",
    conta: contaBancaria
};

function mostrarSaldo(cliente) {
    console.log(`Nome do cliente: ${cliente.nome}`);
    console.log(`Saldo da conta: ${cliente.conta.saldo}`);
}

// Realiza as operações de depósito e saque na conta bancária do cliente
cliente.conta.depositar(500);
cliente.conta.sacar(200);

// Chama a função mostrarSaldo para exibir as informações atualizadas
mostrarSaldo(cliente)

O objeto contaBancaria possui propriedades como titular e saldo, além de métodos para depositar e sacar valores, manipulando diretamente o saldo.

A função mostrarSaldo() exibe o nome do cliente e o saldo atual, separando a lógica de exibição da lógica de operação, o que é uma boa prática.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado

Perfeito, Daniel. Obrigado!

Entretanto, parte do enunciado do exerício em questão pede para criar essa função e 'utilizar o this para acessar as propriedades do objeto'. Isso me confundiu. Você não acha que tem margem?

Até porque, pelo que eu entendi, para fazermos uso do 'this.' o mesmo deve estar inserido no objeto onde existe a função. Me corrija se eu estiver errado.

Fora dele sim, faz sentido. Tanto que fiz assim:

function mostrarSaldo (cliente) { console.log(cliente.conta.titular); console.log(cliente.conta.saldo); }

Entretanto, sem o uso do 'this.' até porque ele não cabe nesse contexto.

Resumindo: o enunciado ficou um pouco confuso.

Mas lendo novamente acho que o sentido está aqui:

"saldo da sua conta" utilizando this

Boa tarde, Rosemberg! Tudo bem?

Agradeço por aguardar o nosso retorno!

De fato pode abrir essa margem de interpretação, uma possibilidade seria assim:

const contaBancaria = {
    titular: "",
    saldo: 0,
    
    depositar: function(valor) {
        this.saldo += valor;
    },
    
    sacar: function(valor) {
        if (valor <= this.saldo) {
            this.saldo -= valor;
        } else {
            console.log("Saldo insuficiente para saque.");
        }
    },

    mostrarSaldo: function() {
        console.log(`Saldo atual de ${cliente.nome}: R$ ${this.saldo.toFixed(2)}`);
    }
};

const cliente = {
    nome: "Carlos",
    conta: contaBancaria
};

cliente.conta.depositar(500);
cliente.conta.sacar(200);
cliente.conta.mostrarSaldo();

Resultado:

 Saldo atual de Carlos: R$ 300.00

Dessa forma estamos mantendo a função mostrarSaldo() fora do cliente propriamente.

Espero ter ajudado!