Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Haaste: Toteuta Yksityiset Ominaisuudet Luokassa | JavaScript-luokkien ja Perinnän Hallinta
Edistynyt JavaScript-Osaaminen

bookHaaste: Toteuta Yksityiset Ominaisuudet Luokassa

Tehtävä

Laadi BankAccount-luokka käyttäjien pankkitilien turvalliseen hallintaan. Jokaisella tilillä on omistaja ja saldo, mutta haluat suojata saldon suoralta käytöltä. Tavoitteena on käyttää yksityisiä ominaisuuksia estämään saldon tahattomat muutokset ja sallia hallittu pääsy metodien kautta.

  1. Yksityinen saldo-ominaisuus:
    • Määrittele BankAccount-luokan sisällä yksityinen ominaisuus #balance.
  2. Konstruktori:
    • Konstruktori ottaa parametreina owner ja initialBalance;
    • Aseta owner julkiseksi ominaisuudeksi ja initialBalance yksityiseen #balance-ominaisuuteen.
  3. Lisää metodit:
    • deposit: Määrittele metodi, joka ottaa parametrina amount. Jos määrä on suurempi kuin 0, lisää amount arvoon #balance;
    • withdraw: Määrittele metodi, joka ottaa parametrina amount. Jos määrä on suurempi kuin 0 ja pienempi tai yhtä suuri kuin #balance, vähennä amount arvosta #balance;
    • getBalance: Määrittele metodi, joka palauttaa merkkijonon, jossa on omistajan nimi ja tilin saldo, esim. "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
  • Määrittele yksityinen ominaisuus #balance BankAccount-luokkaan;
  • Konstruktoriin asetetaan owner julkiseksi ominaisuudeksi ja initialBalance yksityiseen #balance-ominaisuuteen;
  • Määrittele deposit-metodi, joka ottaa parametrina amount. Tarkista, että amount on suurempi kuin 0, ja lisää sitten amount arvoon #balance;
  • Määrittele withdraw-metodi, joka ottaa parametrina amount. Tarkista, että amount on suurempi kuin 0 ja pienempi tai yhtä suuri kuin #balance, ja vähennä sitten amount arvosta #balance;
  • Määrittele getBalance-metodi, joka palauttaa merkkijonon, jossa on omistajan nimi ja tilin saldo.
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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 8

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 2.22

bookHaaste: Toteuta Yksityiset Ominaisuudet Luokassa

Pyyhkäise näyttääksesi valikon

Tehtävä

Laadi BankAccount-luokka käyttäjien pankkitilien turvalliseen hallintaan. Jokaisella tilillä on omistaja ja saldo, mutta haluat suojata saldon suoralta käytöltä. Tavoitteena on käyttää yksityisiä ominaisuuksia estämään saldon tahattomat muutokset ja sallia hallittu pääsy metodien kautta.

  1. Yksityinen saldo-ominaisuus:
    • Määrittele BankAccount-luokan sisällä yksityinen ominaisuus #balance.
  2. Konstruktori:
    • Konstruktori ottaa parametreina owner ja initialBalance;
    • Aseta owner julkiseksi ominaisuudeksi ja initialBalance yksityiseen #balance-ominaisuuteen.
  3. Lisää metodit:
    • deposit: Määrittele metodi, joka ottaa parametrina amount. Jos määrä on suurempi kuin 0, lisää amount arvoon #balance;
    • withdraw: Määrittele metodi, joka ottaa parametrina amount. Jos määrä on suurempi kuin 0 ja pienempi tai yhtä suuri kuin #balance, vähennä amount arvosta #balance;
    • getBalance: Määrittele metodi, joka palauttaa merkkijonon, jossa on omistajan nimi ja tilin saldo, esim. "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
  • Määrittele yksityinen ominaisuus #balance BankAccount-luokkaan;
  • Konstruktoriin asetetaan owner julkiseksi ominaisuudeksi ja initialBalance yksityiseen #balance-ominaisuuteen;
  • Määrittele deposit-metodi, joka ottaa parametrina amount. Tarkista, että amount on suurempi kuin 0, ja lisää sitten amount arvoon #balance;
  • Määrittele withdraw-metodi, joka ottaa parametrina amount. Tarkista, että amount on suurempi kuin 0 ja pienempi tai yhtä suuri kuin #balance, ja vähennä sitten amount arvosta #balance;
  • Määrittele getBalance-metodi, joka palauttaa merkkijonon, jossa on omistajan nimi ja tilin saldo.
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

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 8
some-alt