Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Implementare Proprietà Private in una Classe | Padronanza delle Classi e dell'Ereditarietà in JavaScript
Padronanza Avanzata di JavaScript

bookSfida: 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.

  1. Proprietà privata del saldo:
    • All'interno della classe BankAccount, dichiara una proprietà privata #balance.
  2. Costruttore:
    • Il costruttore deve accettare owner e initialBalance come parametri;
    • Assegna owner a una proprietà pubblica e initialBalance alla proprietà privata #balance.
  3. Aggiungi metodi:
    • deposit: Definisci un metodo che prende amount come parametro. Se l'importo è maggiore di 0, deve aggiungere amount a #balance;
    • withdraw: Definisci un metodo che prende amount come parametro. Se l'importo è maggiore di 0 e minore o uguale a #balance, deve sottrarre amount da #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".
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
  • Dichiara una proprietà privata #balance nella classe BankAccount;
  • Nel costruttore, assegna owner a una proprietà pubblica e initialBalance alla proprietà privata #balance;
  • Definisci un metodo deposit che prende amount come parametro. Verifica che amount sia maggiore di 0, quindi aggiungi amount a #balance;
  • Definisci un metodo withdraw che prende amount come parametro. Verifica che amount sia maggiore di 0 e minore o uguale a #balance, quindi sottrai amount da #balance;
  • Definisci un metodo getBalance che restituisce una stringa con il nome del proprietario e il saldo del conto.
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

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 8

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookSfida: 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.

  1. Proprietà privata del saldo:
    • All'interno della classe BankAccount, dichiara una proprietà privata #balance.
  2. Costruttore:
    • Il costruttore deve accettare owner e initialBalance come parametri;
    • Assegna owner a una proprietà pubblica e initialBalance alla proprietà privata #balance.
  3. Aggiungi metodi:
    • deposit: Definisci un metodo che prende amount come parametro. Se l'importo è maggiore di 0, deve aggiungere amount a #balance;
    • withdraw: Definisci un metodo che prende amount come parametro. Se l'importo è maggiore di 0 e minore o uguale a #balance, deve sottrarre amount da #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".
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
  • Dichiara una proprietà privata #balance nella classe BankAccount;
  • Nel costruttore, assegna owner a una proprietà pubblica e initialBalance alla proprietà privata #balance;
  • Definisci un metodo deposit che prende amount come parametro. Verifica che amount sia maggiore di 0, quindi aggiungi amount a #balance;
  • Definisci un metodo withdraw che prende amount come parametro. Verifica che amount sia maggiore di 0 e minore o uguale a #balance, quindi sottrai amount da #balance;
  • Definisci un metodo getBalance che restituisce una stringa con il nome del proprietario e il saldo del conto.
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

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 8
some-alt