Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Uitdaging: Implementeer Privé-Eigenschappen in een Klasse | Beheersing van JavaScript-Klassen en Overerving
Geavanceerde JavaScript-Beheersing

bookUitdaging: Implementeer Privé-Eigenschappen in een Klasse

Taak

Je maakt een BankAccount-klasse om bankrekeningen van gebruikers veilig te beheren. Elke rekening heeft een eigenaar en een saldo, maar je wilt dat het saldo beschermd is tegen directe toegang. Het doel is om privé-eigenschappen te gebruiken om onbedoelde wijzigingen aan het saldo te voorkomen, terwijl gecontroleerde toegang via methoden mogelijk blijft.

  1. Privé saldo-eigenschap:
    • Declareer binnen de BankAccount-klasse een privé-eigenschap #balance.
  2. Constructor:
    • De constructor accepteert owner en initialBalance als parameters;
    • Wijs owner toe aan een publieke eigenschap en initialBalance aan de privé-eigenschap #balance.
  3. Methoden toevoegen:
    • deposit: Definieer een methode die amount als parameter neemt. Als het bedrag groter is dan 0, voeg dan amount toe aan #balance;
    • withdraw: Definieer een methode die amount als parameter neemt. Als het bedrag groter is dan 0 en kleiner dan of gelijk aan #balance, trek dan amount af van #balance;
    • getBalance: Definieer een methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo, bijvoorbeeld: "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
  • Declareer een privé-eigenschap #balance in de BankAccount-klasse;
  • Wijs in de constructor owner toe aan een publieke eigenschap en initialBalance aan de privé-eigenschap #balance;
  • Definieer een deposit-methode die amount als parameter neemt. Controleer of amount groter is dan 0 en voeg dan amount toe aan #balance;
  • Definieer een withdraw-methode die amount als parameter neemt. Controleer of amount groter is dan 0 en kleiner dan of gelijk aan #balance, trek dan amount af van #balance;
  • Definieer een getBalance-methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo.
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

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 8

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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

bookUitdaging: Implementeer Privé-Eigenschappen in een Klasse

Veeg om het menu te tonen

Taak

Je maakt een BankAccount-klasse om bankrekeningen van gebruikers veilig te beheren. Elke rekening heeft een eigenaar en een saldo, maar je wilt dat het saldo beschermd is tegen directe toegang. Het doel is om privé-eigenschappen te gebruiken om onbedoelde wijzigingen aan het saldo te voorkomen, terwijl gecontroleerde toegang via methoden mogelijk blijft.

  1. Privé saldo-eigenschap:
    • Declareer binnen de BankAccount-klasse een privé-eigenschap #balance.
  2. Constructor:
    • De constructor accepteert owner en initialBalance als parameters;
    • Wijs owner toe aan een publieke eigenschap en initialBalance aan de privé-eigenschap #balance.
  3. Methoden toevoegen:
    • deposit: Definieer een methode die amount als parameter neemt. Als het bedrag groter is dan 0, voeg dan amount toe aan #balance;
    • withdraw: Definieer een methode die amount als parameter neemt. Als het bedrag groter is dan 0 en kleiner dan of gelijk aan #balance, trek dan amount af van #balance;
    • getBalance: Definieer een methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo, bijvoorbeeld: "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
  • Declareer een privé-eigenschap #balance in de BankAccount-klasse;
  • Wijs in de constructor owner toe aan een publieke eigenschap en initialBalance aan de privé-eigenschap #balance;
  • Definieer een deposit-methode die amount als parameter neemt. Controleer of amount groter is dan 0 en voeg dan amount toe aan #balance;
  • Definieer een withdraw-methode die amount als parameter neemt. Controleer of amount groter is dan 0 en kleiner dan of gelijk aan #balance, trek dan amount af van #balance;
  • Definieer een getBalance-methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo.
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

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 8
some-alt