Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Implémentation de Propriétés Privées dans une Classe | Classes
Maîtrise Avancée de JavaScript
course content

Contenu du cours

Maîtrise Avancée de JavaScript

Maîtrise Avancée de JavaScript

2. Manipulation du DOM
3. Événements et Gestion des Événements
4. JavaScript Asynchrone et APIs

book
Défi : Implémentation de Propriétés Privées dans une Classe

Tâche

Vous créez une classe BankAccount pour gérer les comptes bancaires des utilisateurs de manière sécurisée. Chaque compte a un propriétaire et un solde, mais vous souhaitez que le solde soit protégé contre l'accès direct. Votre objectif est d'utiliser des propriétés privées pour empêcher les modifications non intentionnelles du solde tout en permettant un accès contrôlé via des méthodes.

  1. Propriété Privée du Solde:
    • À l'intérieur de la classe BankAccount, déclarez une propriété privée #balance.
  2. Constructeur:
    • Le constructeur doit accepter owner et initialBalance comme paramètres;
    • Assignez owner à une propriété publique et initialBalance à la propriété privée #balance.
  3. Ajouter des Méthodes:
    • deposit: Définissez une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0, il doit ajouter amount à #balance;
    • withdraw: Définissez une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0 et inférieur ou égal à #balance, il doit soustraire amount de #balance;
    • getBalance: Définissez une méthode qui retourne une chaîne avec le nom du propriétaire et le solde du compte, par exemple, "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
  • Déclarez une propriété privée #balance dans la classe BankAccount;
  • Dans le constructeur, assignez owner à une propriété publique et initialBalance à la propriété privée #balance;
  • Définissez une méthode deposit qui prend amount comme paramètre. Vérifiez si amount est supérieur à 0, puis ajoutez amount à #balance;
  • Définissez une méthode withdraw qui prend amount comme paramètre. Vérifiez si amount est supérieur à 0 et inférieur ou égal à #balance, puis soustrayez amount de #balance;
  • Définissez une méthode getBalance qui renvoie une chaîne avec le nom du propriétaire et le solde du compte.
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

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 8
We're sorry to hear that something went wrong. What happened?
some-alt