Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Udfordring: Implementering af Private Egenskaber i en Klasse | Mestering af JavaScript-klasser og Arv
Avanceret JavaScript-Mestring

bookUdfordring: Implementering af Private Egenskaber i en Klasse

Opgave

Du opretter en BankAccount-klasse til sikker håndtering af brugeres bankkonti. Hver konto har en ejer og en saldo, men du ønsker, at saldoen skal være beskyttet mod direkte adgang. Målet er at bruge private egenskaber for at forhindre utilsigtede ændringer af saldoen, samtidig med at kontrolleret adgang tillades gennem metoder.

  1. Privat saldo-egenskab:
    • Inde i BankAccount-klassen erklæres en privat egenskab #balance.
  2. Konstruktør:
    • Konstruktøren skal acceptere owner og initialBalance som parametre;
    • Tildel owner til en offentlig egenskab og initialBalance til den private #balance-egenskab.
  3. Tilføj metoder:
    • deposit: Definer en metode, der tager amount som parameter. Hvis beløbet er større end 0, skal lægge amount til #balance;
    • withdraw: Definer en metode, der tager amount som parameter. Hvis beløbet er større end 0 og mindre end eller lig med #balance, skal trække amount fra #balance;
    • getBalance: Definer en metode, der returnerer en streng med ejerens navn og kontosaldoen, f.eks. "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
  • Erklær en privat egenskab #balance i BankAccount-klassen;
  • I konstruktøren tildeles owner til en offentlig egenskab og initialBalance til den private #balance-egenskab;
  • Definer en deposit-metode, der tager amount som parameter. Kontroller, om amount er større end 0, og læg derefter amount til #balance;
  • Definer en withdraw-metode, der tager amount som parameter. Kontroller, om amount er større end 0 og mindre end eller lig med #balance, og træk derefter amount fra #balance;
  • Definer en getBalance-metode, der returnerer en streng med ejerens navn og kontosaldoen.
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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 8

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Awesome!

Completion rate improved to 2.22

bookUdfordring: Implementering af Private Egenskaber i en Klasse

Stryg for at vise menuen

Opgave

Du opretter en BankAccount-klasse til sikker håndtering af brugeres bankkonti. Hver konto har en ejer og en saldo, men du ønsker, at saldoen skal være beskyttet mod direkte adgang. Målet er at bruge private egenskaber for at forhindre utilsigtede ændringer af saldoen, samtidig med at kontrolleret adgang tillades gennem metoder.

  1. Privat saldo-egenskab:
    • Inde i BankAccount-klassen erklæres en privat egenskab #balance.
  2. Konstruktør:
    • Konstruktøren skal acceptere owner og initialBalance som parametre;
    • Tildel owner til en offentlig egenskab og initialBalance til den private #balance-egenskab.
  3. Tilføj metoder:
    • deposit: Definer en metode, der tager amount som parameter. Hvis beløbet er større end 0, skal lægge amount til #balance;
    • withdraw: Definer en metode, der tager amount som parameter. Hvis beløbet er større end 0 og mindre end eller lig med #balance, skal trække amount fra #balance;
    • getBalance: Definer en metode, der returnerer en streng med ejerens navn og kontosaldoen, f.eks. "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
  • Erklær en privat egenskab #balance i BankAccount-klassen;
  • I konstruktøren tildeles owner til en offentlig egenskab og initialBalance til den private #balance-egenskab;
  • Definer en deposit-metode, der tager amount som parameter. Kontroller, om amount er større end 0, og læg derefter amount til #balance;
  • Definer en withdraw-metode, der tager amount som parameter. Kontroller, om amount er større end 0 og mindre end eller lig med #balance, og træk derefter amount fra #balance;
  • Definer en getBalance-metode, der returnerer en streng med ejerens navn og kontosaldoen.
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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 8
some-alt