Desafio: 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.
- Propriedade Privada de Saldo:
- Dentro da classe
BankAccount, declare uma propriedade privada#balance.
- Dentro da classe
- Construtor:
- O construtor deve aceitar
ownereinitialBalancecomo parâmetros; - Atribua
ownera uma propriedade pública einitialBalanceà propriedade privada#balance.
- O construtor deve aceitar
- Adicionar Métodos:
- deposit: Defina um método que recebe
amountcomo parâmetro. Se o valor for maior que 0, deve somaramountao#balance; - withdraw: Defina um método que recebe
amountcomo parâmetro. Se o valor for maior que 0 e menor ou igual ao#balance, deve subtrairamountdo#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".
- deposit: Defina um método que recebe
123456789101112131415161718192021222324252627282930313233343536class 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);
- Declarar uma propriedade privada
#balancena classeBankAccount; - No construtor, atribuir
ownera uma propriedade pública einitialBalanceà propriedade privada#balance; - Definir um método
depositque recebeamountcomo parâmetro. Verificar seamounté maior que 0, então somaramountao#balance; - Definir um método
withdrawque recebeamountcomo parâmetro. Verificar seamounté maior que 0 e menor ou igual ao#balance, então subtrairamountdo#balance; - Definir um método
getBalanceque retorna uma string com o nome do proprietário e o saldo da conta.
123456789101112131415161718192021222324252627282930313233343536class 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);
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Desafio: 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.
- Propriedade Privada de Saldo:
- Dentro da classe
BankAccount, declare uma propriedade privada#balance.
- Dentro da classe
- Construtor:
- O construtor deve aceitar
ownereinitialBalancecomo parâmetros; - Atribua
ownera uma propriedade pública einitialBalanceà propriedade privada#balance.
- O construtor deve aceitar
- Adicionar Métodos:
- deposit: Defina um método que recebe
amountcomo parâmetro. Se o valor for maior que 0, deve somaramountao#balance; - withdraw: Defina um método que recebe
amountcomo parâmetro. Se o valor for maior que 0 e menor ou igual ao#balance, deve subtrairamountdo#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".
- deposit: Defina um método que recebe
123456789101112131415161718192021222324252627282930313233343536class 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);
- Declarar uma propriedade privada
#balancena classeBankAccount; - No construtor, atribuir
ownera uma propriedade pública einitialBalanceà propriedade privada#balance; - Definir um método
depositque recebeamountcomo parâmetro. Verificar seamounté maior que 0, então somaramountao#balance; - Definir um método
withdrawque recebeamountcomo parâmetro. Verificar seamounté maior que 0 e menor ou igual ao#balance, então subtrairamountdo#balance; - Definir um método
getBalanceque retorna uma string com o nome do proprietário e o saldo da conta.
123456789101112131415161718192021222324252627282930313233343536class 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);
Obrigado pelo seu feedback!