Dé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.
- Propriété privée du solde :
- À l'intérieur de la classe
BankAccount, déclarez une propriété privée#balance.
- À l'intérieur de la classe
- Constructeur :
- Le constructeur doit accepter
owneretinitialBalancecomme paramètres ; - Attribuez
ownerà une propriété publique etinitialBalanceà la propriété privée#balance.
- Le constructeur doit accepter
- Ajouter des méthodes :
- deposit : Définir une méthode qui prend
amountcomme paramètre. Si le montant est supérieur à 0, alorsamountdoit être ajouté à#balance; - withdraw : Définir une méthode qui prend
amountcomme paramètre. Si le montant est supérieur à 0 et inférieur ou égal à#balance, alorsamountdoit ê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".
- deposit : Définir une méthode qui prend
123456789101112131415161718192021222324252627282930313233343536class 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);
- Déclarer une propriété privée
#balancedans la classeBankAccount; - Dans le constructeur, attribuer
ownerà une propriété publique etinitialBalanceà la propriété privée#balance; - Définir une méthode
depositqui prendamountcomme paramètre. Vérifier siamountest supérieur à 0, puis ajouteramountà#balance; - Définir une méthode
withdrawqui prendamountcomme paramètre. Vérifier siamountest supérieur à 0 et inférieur ou égal à#balance, puis soustraireamountde#balance; - Définir une méthode
getBalancequi retourne une chaîne de caractères avec le nom du propriétaire et le solde du compte.
123456789101112131415161718192021222324252627282930313233343536class 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);
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Dé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.
- Propriété privée du solde :
- À l'intérieur de la classe
BankAccount, déclarez une propriété privée#balance.
- À l'intérieur de la classe
- Constructeur :
- Le constructeur doit accepter
owneretinitialBalancecomme paramètres ; - Attribuez
ownerà une propriété publique etinitialBalanceà la propriété privée#balance.
- Le constructeur doit accepter
- Ajouter des méthodes :
- deposit : Définir une méthode qui prend
amountcomme paramètre. Si le montant est supérieur à 0, alorsamountdoit être ajouté à#balance; - withdraw : Définir une méthode qui prend
amountcomme paramètre. Si le montant est supérieur à 0 et inférieur ou égal à#balance, alorsamountdoit ê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".
- deposit : Définir une méthode qui prend
123456789101112131415161718192021222324252627282930313233343536class 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);
- Déclarer une propriété privée
#balancedans la classeBankAccount; - Dans le constructeur, attribuer
ownerà une propriété publique etinitialBalanceà la propriété privée#balance; - Définir une méthode
depositqui prendamountcomme paramètre. Vérifier siamountest supérieur à 0, puis ajouteramountà#balance; - Définir une méthode
withdrawqui prendamountcomme paramètre. Vérifier siamountest supérieur à 0 et inférieur ou égal à#balance, puis soustraireamountde#balance; - Définir une méthode
getBalancequi retourne une chaîne de caractères avec le nom du propriétaire et le solde du compte.
123456789101112131415161718192021222324252627282930313233343536class 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);
Merci pour vos commentaires !