Sfida: Implementare Proprietà Private in una Classe
Compito
Stai creando una classe BankAccount per gestire in modo sicuro i conti bancari degli utenti. Ogni conto ha un proprietario e un saldo, ma desideri che il saldo sia protetto da accessi diretti. L'obiettivo è utilizzare proprietà private per prevenire modifiche indesiderate al saldo, consentendo l'accesso controllato tramite metodi.
- Proprietà privata del saldo:
- All'interno della classe
BankAccount, dichiara una proprietà privata#balance.
- All'interno della classe
- Costruttore:
- Il costruttore deve accettare
ownereinitialBalancecome parametri; - Assegna
ownera una proprietà pubblica einitialBalancealla proprietà privata#balance.
- Il costruttore deve accettare
- Aggiungi metodi:
- deposit: Definisci un metodo che prende
amountcome parametro. Se l'importo è maggiore di 0, deve aggiungereamounta#balance; - withdraw: Definisci un metodo che prende
amountcome parametro. Se l'importo è maggiore di 0 e minore o uguale a#balance, deve sottrarreamountda#balance; - getBalance: Definisci un metodo che restituisce una stringa con il nome del proprietario e il saldo del conto, ad esempio,
"Account balance for John: $1500".
- deposit: Definisci un metodo che prende
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);
- Dichiara una proprietà privata
#balancenella classeBankAccount; - Nel costruttore, assegna
ownera una proprietà pubblica einitialBalancealla proprietà privata#balance; - Definisci un metodo
depositche prendeamountcome parametro. Verifica cheamountsia maggiore di 0, quindi aggiungiamounta#balance; - Definisci un metodo
withdrawche prendeamountcome parametro. Verifica cheamountsia maggiore di 0 e minore o uguale a#balance, quindi sottraiamountda#balance; - Definisci un metodo
getBalanceche restituisce una stringa con il nome del proprietario e il saldo del conto.
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);
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Sfida: Implementare Proprietà Private in una Classe
Scorri per mostrare il menu
Compito
Stai creando una classe BankAccount per gestire in modo sicuro i conti bancari degli utenti. Ogni conto ha un proprietario e un saldo, ma desideri che il saldo sia protetto da accessi diretti. L'obiettivo è utilizzare proprietà private per prevenire modifiche indesiderate al saldo, consentendo l'accesso controllato tramite metodi.
- Proprietà privata del saldo:
- All'interno della classe
BankAccount, dichiara una proprietà privata#balance.
- All'interno della classe
- Costruttore:
- Il costruttore deve accettare
ownereinitialBalancecome parametri; - Assegna
ownera una proprietà pubblica einitialBalancealla proprietà privata#balance.
- Il costruttore deve accettare
- Aggiungi metodi:
- deposit: Definisci un metodo che prende
amountcome parametro. Se l'importo è maggiore di 0, deve aggiungereamounta#balance; - withdraw: Definisci un metodo che prende
amountcome parametro. Se l'importo è maggiore di 0 e minore o uguale a#balance, deve sottrarreamountda#balance; - getBalance: Definisci un metodo che restituisce una stringa con il nome del proprietario e il saldo del conto, ad esempio,
"Account balance for John: $1500".
- deposit: Definisci un metodo che prende
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);
- Dichiara una proprietà privata
#balancenella classeBankAccount; - Nel costruttore, assegna
ownera una proprietà pubblica einitialBalancealla proprietà privata#balance; - Definisci un metodo
depositche prendeamountcome parametro. Verifica cheamountsia maggiore di 0, quindi aggiungiamounta#balance; - Definisci un metodo
withdrawche prendeamountcome parametro. Verifica cheamountsia maggiore di 0 e minore o uguale a#balance, quindi sottraiamountda#balance; - Definisci un metodo
getBalanceche restituisce una stringa con il nome del proprietario e il saldo del conto.
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);
Grazie per i tuoi commenti!