Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Implementar Propriedades Privadas em uma Classe | Dominando Classes e Herança em JavaScript
Domínio Avançado de JavaScript

bookDesafio: Implementar Propriedades Privadas em uma Classe

Tarefa

Você está criando uma classe BankAccount para gerenciar contas bancárias de usuários de forma segura. Cada conta possui um proprietário e um saldo, mas o saldo deve ser protegido contra acesso direto. O objetivo é utilizar propriedades privadas para evitar modificações não intencionais no saldo, permitindo acesso controlado por meio de métodos.

  1. Propriedade Privada de Saldo:
    • Dentro da classe BankAccount, declare uma propriedade privada #balance.
  2. Construtor:
    • O construtor deve aceitar owner e initialBalance como parâmetros;
    • Atribua owner a uma propriedade pública e initialBalance à propriedade privada #balance.
  3. Adicionar Métodos:
    • deposit: Defina um método que recebe amount como parâmetro. Se o valor for maior que 0, deve somar amount ao #balance;
    • withdraw: Defina um método que recebe amount como parâmetro. Se o valor for maior que 0 e menor ou igual ao #balance, deve subtrair amount do #balance;
    • getBalance: Defina um método que retorna uma string com o nome do proprietário e o saldo da conta, por exemplo, "Account balance for John: $1500".
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #_____; // Declare private property constructor(owner, initialBalance) { this._____ = owner; this.#_____ = initialBalance; } deposit(_____) { if (_____) { this.#_____ += _____; } } withdraw(_____) { if (_____ && _____) { this.#_____ -= _____; } } getBalance() { return `Account balance for ${this._____}: $${this.#_____}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy
  • Declarar uma propriedade privada #balance na classe BankAccount;
  • No construtor, atribuir owner a uma propriedade pública e initialBalance à propriedade privada #balance;
  • Definir um método deposit que recebe amount como parâmetro. Verificar se amount é maior que 0, então somar amount ao #balance;
  • Definir um método withdraw que recebe amount como parâmetro. Verificar se amount é maior que 0 e menor ou igual ao #balance, então subtrair amount do #balance;
  • Definir um método getBalance que retorna uma string com o nome do proprietário e o saldo da conta.
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #balance; // Declare private property constructor(owner, initialBalance) { this.owner = owner; this.#balance = initialBalance; } deposit(amount) { if (amount > 0) { this.#balance += amount; } } withdraw(amount) { if (amount > 0 && amount <= this.#balance) { this.#balance -= amount; } } getBalance() { return `Account balance for ${this.owner}: $${this.#balance}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Output: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Output: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how private properties work in JavaScript classes?

What happens if I try to access the #balance property directly from outside the class?

Can you show how to add error handling for invalid deposit or withdrawal amounts?

Awesome!

Completion rate improved to 2.22

bookDesafio: Implementar Propriedades Privadas em uma Classe

Deslize para mostrar o menu

Tarefa

Você está criando uma classe BankAccount para gerenciar contas bancárias de usuários de forma segura. Cada conta possui um proprietário e um saldo, mas o saldo deve ser protegido contra acesso direto. O objetivo é utilizar propriedades privadas para evitar modificações não intencionais no saldo, permitindo acesso controlado por meio de métodos.

  1. Propriedade Privada de Saldo:
    • Dentro da classe BankAccount, declare uma propriedade privada #balance.
  2. Construtor:
    • O construtor deve aceitar owner e initialBalance como parâmetros;
    • Atribua owner a uma propriedade pública e initialBalance à propriedade privada #balance.
  3. Adicionar Métodos:
    • deposit: Defina um método que recebe amount como parâmetro. Se o valor for maior que 0, deve somar amount ao #balance;
    • withdraw: Defina um método que recebe amount como parâmetro. Se o valor for maior que 0 e menor ou igual ao #balance, deve subtrair amount do #balance;
    • getBalance: Defina um método que retorna uma string com o nome do proprietário e o saldo da conta, por exemplo, "Account balance for John: $1500".
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #_____; // Declare private property constructor(owner, initialBalance) { this._____ = owner; this.#_____ = initialBalance; } deposit(_____) { if (_____) { this.#_____ += _____; } } withdraw(_____) { if (_____ && _____) { this.#_____ -= _____; } } getBalance() { return `Account balance for ${this._____}: $${this.#_____}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Expected: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy
  • Declarar uma propriedade privada #balance na classe BankAccount;
  • No construtor, atribuir owner a uma propriedade pública e initialBalance à propriedade privada #balance;
  • Definir um método deposit que recebe amount como parâmetro. Verificar se amount é maior que 0, então somar amount ao #balance;
  • Definir um método withdraw que recebe amount como parâmetro. Verificar se amount é maior que 0 e menor ou igual ao #balance, então subtrair amount do #balance;
  • Definir um método getBalance que retorna uma string com o nome do proprietário e o saldo da conta.
123456789101112131415161718192021222324252627282930313233343536
class BankAccount { #balance; // Declare private property constructor(owner, initialBalance) { this.owner = owner; this.#balance = initialBalance; } deposit(amount) { if (amount > 0) { this.#balance += amount; } } withdraw(amount) { if (amount > 0 && amount <= this.#balance) { this.#balance -= amount; } } getBalance() { return `Account balance for ${this.owner}: $${this.#balance}`; } } // Testing const account1 = new BankAccount('Alice', 1000); account1.deposit(500); console.log(account1.getBalance()); // Output: Account balance for Alice: $1500 account1.withdraw(300); console.log(account1.getBalance()); // Output: Account balance for Alice: $1200 // Attempt direct access (should cause an error) // console.log(account1.#balance);
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 8
some-alt