Contenu du cours
Maîtrise Avancée de JavaScript
Maîtrise Avancée de JavaScript
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.
Propriété Privée du Solde :
À l'intérieur de la classe
BankAccount
, déclarez une propriété privée#balance
.
Constructeur :
Le constructeur doit accepter
owner
etinitialBalance
comme paramètres;Assignez
owner
à une propriété publique etinitialBalance
à la propriété privée#balance
.
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 ajouteramount
à#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 soustraireamount
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"
.
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);
Déclarez une propriété privée
#balance
dans la classeBankAccount
;Dans le constructeur, assignez
owner
à une propriété publique etinitialBalance
à la propriété privée#balance
;Définissez une méthode
deposit
qui prendamount
comme paramètre. Vérifiez siamount
est supérieur à 0, puis ajoutezamount
à#balance
;Définissez une méthode
withdraw
qui prendamount
comme paramètre. Vérifiez siamount
est supérieur à 0 et inférieur ou égal à#balance
, puis soustrayezamount
de#balance
;Définissez une méthode
getBalance
qui renvoie une chaîne avec le nom du propriétaire et le solde du compte.
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);
Merci pour vos commentaires !