Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Private Eigenschaften in Einer Klasse Implementieren | JavaScript-Klassen und Vererbung Meistern
Fortgeschrittene JavaScript-Beherrschung

bookHerausforderung: Private Eigenschaften in Einer Klasse Implementieren

Aufgabe

Sie erstellen eine BankAccount-Klasse, um die Bankkonten der Benutzer sicher zu verwalten. Jedes Konto hat einen Besitzer und ein Guthaben, aber das Guthaben soll vor direktem Zugriff geschützt werden. Ziel ist es, private Eigenschaften zu verwenden, um unbeabsichtigte Änderungen am Guthaben zu verhindern und gleichzeitig einen kontrollierten Zugriff über Methoden zu ermöglichen.

  1. Private Guthabeneigenschaft:
    • Deklarieren Sie innerhalb der Klasse BankAccount eine private Eigenschaft #balance.
  2. Konstruktor:
    • Der Konstruktor soll owner und initialBalance als Parameter akzeptieren;
    • Weisen Sie owner einer öffentlichen Eigenschaft und initialBalance der privaten Eigenschaft #balance zu.
  3. Methoden hinzufügen:
    • deposit: Definieren Sie eine Methode, die amount als Parameter übernimmt. Wenn der Betrag größer als 0 ist, soll amount zu #balance addiert werden;
    • withdraw: Definieren Sie eine Methode, die amount als Parameter übernimmt. Wenn der Betrag größer als 0 und kleiner oder gleich #balance ist, soll amount von #balance subtrahiert werden;
    • getBalance: Definieren Sie eine Methode, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt, z. B. "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
  • Deklarieren Sie eine private Eigenschaft #balance in der Klasse BankAccount;
  • Weisen Sie im Konstruktor owner einer öffentlichen Eigenschaft und initialBalance der privaten Eigenschaft #balance zu;
  • Definieren Sie eine Methode deposit, die amount als Parameter übernimmt. Prüfen Sie, ob amount größer als 0 ist, und addieren Sie dann amount zu #balance;
  • Definieren Sie eine Methode withdraw, die amount als Parameter übernimmt. Prüfen Sie, ob amount größer als 0 und kleiner oder gleich #balance ist, und subtrahieren Sie dann amount von #balance;
  • Definieren Sie eine Methode getBalance, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt.
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

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 8

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

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

bookHerausforderung: Private Eigenschaften in Einer Klasse Implementieren

Swipe um das Menü anzuzeigen

Aufgabe

Sie erstellen eine BankAccount-Klasse, um die Bankkonten der Benutzer sicher zu verwalten. Jedes Konto hat einen Besitzer und ein Guthaben, aber das Guthaben soll vor direktem Zugriff geschützt werden. Ziel ist es, private Eigenschaften zu verwenden, um unbeabsichtigte Änderungen am Guthaben zu verhindern und gleichzeitig einen kontrollierten Zugriff über Methoden zu ermöglichen.

  1. Private Guthabeneigenschaft:
    • Deklarieren Sie innerhalb der Klasse BankAccount eine private Eigenschaft #balance.
  2. Konstruktor:
    • Der Konstruktor soll owner und initialBalance als Parameter akzeptieren;
    • Weisen Sie owner einer öffentlichen Eigenschaft und initialBalance der privaten Eigenschaft #balance zu.
  3. Methoden hinzufügen:
    • deposit: Definieren Sie eine Methode, die amount als Parameter übernimmt. Wenn der Betrag größer als 0 ist, soll amount zu #balance addiert werden;
    • withdraw: Definieren Sie eine Methode, die amount als Parameter übernimmt. Wenn der Betrag größer als 0 und kleiner oder gleich #balance ist, soll amount von #balance subtrahiert werden;
    • getBalance: Definieren Sie eine Methode, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt, z. B. "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
  • Deklarieren Sie eine private Eigenschaft #balance in der Klasse BankAccount;
  • Weisen Sie im Konstruktor owner einer öffentlichen Eigenschaft und initialBalance der privaten Eigenschaft #balance zu;
  • Definieren Sie eine Methode deposit, die amount als Parameter übernimmt. Prüfen Sie, ob amount größer als 0 ist, und addieren Sie dann amount zu #balance;
  • Definieren Sie eine Methode withdraw, die amount als Parameter übernimmt. Prüfen Sie, ob amount größer als 0 und kleiner oder gleich #balance ist, und subtrahieren Sie dann amount von #balance;
  • Definieren Sie eine Methode getBalance, die einen String mit dem Namen des Besitzers und dem Kontostand zurückgibt.
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

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 8
some-alt