Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Implémenter des Propriétés Privées dans une Classe | Maîtrise des Classes et de l'Héritage en JavaScript
Maîtrise Avancée de JavaScript

bookDéfi : Implémenter des 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 possède un propriétaire et un solde, mais vous souhaitez que le solde soit protégé contre tout accès direct. L'objectif est d'utiliser des propriétés privées afin d'empêcher toute modification involontaire 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 ;
    • Attribuez owner à une propriété publique et initialBalance à la propriété privée #balance.
  3. Ajouter des méthodes :
    • deposit : Définir une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0, alors amount doit être ajouté à #balance ;
    • withdraw : Définir une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0 et inférieur ou égal à #balance, alors amount doit être soustrait de #balance ;
    • getBalance : Définir une méthode qui retourne une chaîne de caractères 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éclarer une propriété privée #balance dans la classe BankAccount ;
  • Dans le constructeur, attribuer owner à une propriété publique et initialBalance à la propriété privée #balance ;
  • Définir une méthode deposit qui prend amount comme paramètre. Vérifier si amount est supérieur à 0, puis ajouter amount à #balance ;
  • Définir une méthode withdraw qui prend amount comme paramètre. Vérifier si amount est supérieur à 0 et inférieur ou égal à #balance, puis soustraire amount de #balance ;
  • Définir une méthode getBalance qui retourne une chaîne de caractères 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

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

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

bookDéfi : Implémenter des Propriétés Privées dans une Classe

Glissez pour afficher le menu

Tâche

Vous créez une classe BankAccount pour gérer les comptes bancaires des utilisateurs de manière sécurisée. Chaque compte possède un propriétaire et un solde, mais vous souhaitez que le solde soit protégé contre tout accès direct. L'objectif est d'utiliser des propriétés privées afin d'empêcher toute modification involontaire 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 ;
    • Attribuez owner à une propriété publique et initialBalance à la propriété privée #balance.
  3. Ajouter des méthodes :
    • deposit : Définir une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0, alors amount doit être ajouté à #balance ;
    • withdraw : Définir une méthode qui prend amount comme paramètre. Si le montant est supérieur à 0 et inférieur ou égal à #balance, alors amount doit être soustrait de #balance ;
    • getBalance : Définir une méthode qui retourne une chaîne de caractères 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éclarer une propriété privée #balance dans la classe BankAccount ;
  • Dans le constructeur, attribuer owner à une propriété publique et initialBalance à la propriété privée #balance ;
  • Définir une méthode deposit qui prend amount comme paramètre. Vérifier si amount est supérieur à 0, puis ajouter amount à #balance ;
  • Définir une méthode withdraw qui prend amount comme paramètre. Vérifier si amount est supérieur à 0 et inférieur ou égal à #balance, puis soustraire amount de #balance ;
  • Définir une méthode getBalance qui retourne une chaîne de caractères 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
some-alt