1
resposta

Atribuição direta ao Cliente

Não está como no curso, pode me ajudar ?

const contaCorrenteAlice = new ContaCorrente();
contaCorrenteAlice.cliente = new Cliente();
contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cpf = 15975365487
contaCorrenteAlice.agencia = 102;

console.log(contaCorrenteAlice);

no terminal aparece nesse formato

PS C:\Users\User\Documents\DESENVOLVEDOR WEB\VSCODE\Alura\JS POO - Alura> node ./index.js
ContaCorrente {
  agencia: 102,
  cliente: Cliente { nome: undefined, cpf: undefined },
  saldo: undefined,
  nome: 'Alice',
  cpf: 15975365487
}

ou seja, a atribuição direta contaCorrenteAlice.cliente = new Cliente(); não está ocorrendo, no VSCODE a palavra new antes do Cliente não está 'colorida' como está no vídeo, o VSCODE sugere eu fazer assim:

const contaCorrenteAlice = new ContaCorrente();
const newLocal = contaCorrenteAlice.cliente = new Cliente();
contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cpf = 15975365487
contaCorrenteAlice.agencia = 102;

console.log(contaCorrenteAlice);

eu colocar essa const newLocal = ...

por que isso ocorreu? fiz exatamente como no curso, a diferença mesmo foi o nome da const invés de conta2 colocquei contaCorrenteAlice ..

Aqui está todo o meu index.js para melhor visualização

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


const cliente1 = new Cliente();
const contaCorrenteRicardo = new ContaCorrente();

cliente1.nome = "Ricardo";
cliente1.cpf = "11122233344";
contaCorrenteRicardo.saldo = 0;
contaCorrenteRicardo.agencia = 1001;
contaCorrenteRicardo.cliente = cliente1;

// const cliente2 = new Cliente();
// const contaCorrenteAlice = new ContaCorrente();

// cliente2.nome = "Alice";
// cliente2.cpf = "15975365487";
// contaCorrenteAlice.agencia = 1001;
// contaCorrenteAlice.saldo = 0;
// contaCorrenteAlice.cliente = cliente2;



contaCorrenteRicardo.depositar(500);     //*depositou 500 na conta do Ricardo
// contaCorrenteRicardo.transferir(200, contaCorrenteAlice)   //* transferiu para a Alice


// console.log(contaCorrenteAlice);
// console.log(contaCorrenteRicardo);

//*** Posso fazer uma atribuição direta ao espaço de memória do objeto instanciado */
//***  (EXEMPLO COM O CLINTE 2) */

const contaCorrenteAlice = new ContaCorrente();
const newLocal = contaCorrenteAlice.cliente = new Cliente();
contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cpf = 15975365487
contaCorrenteAlice.agencia = 102;

console.log(contaCorrenteAlice);

comentei tudo referente a Alice para fazer essa atribuição direta

1 resposta

Olá Leonardo! Espero ainda poder ajudar

No código abaixo, apresenta tentativa original de atribuição direta

const contaCorrenteAlice = new ContaCorrente();
contaCorrenteAlice.cliente = new Cliente();
contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cpf = 15975365487
contaCorrenteAlice.agencia = 102;

Porém, há um pequeno erro, as linhas abaixo estão se referindo diretamente ao objeto contaCorrenteAlice, ou seja, criando novas propriedades para o objeto de maneria dinâmica, não complementando os campos já presente na propriedade cliente, que também é um objeto

contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cpf = 15975365487

Para fazer a atribuição direta, não declarando no "new Cliente()", é necessário determinar que você está se referindo a propriedade "nome" dentro de "cliente" que faz parte da "contaCorrenteAlice". Como demonstrado abaixo

contaCorrenteAlice.cliente.nome = "Alice";

Dessa maneira, o código ficaria

const contaCorrenteAlice = new ContaCorrente();
contaCorrenteAlice.cliente = new Cliente();
//contaCorrenteAlice.nome = "Alice";
contaCorrenteAlice.cliente.nome = "Alice";
// contaCorrenteAlice.cpf = 15975365487
contaCorrenteAlice.cliente.cpf = 15975365487
contaCorrenteAlice.agencia = 102;

Espero ter ajudado! Obrigado por compartilhar sua dúvida!