Uitdaging: Implementeer Privé-Eigenschappen in een Klasse
Taak
Je maakt een BankAccount-klasse om bankrekeningen van gebruikers veilig te beheren. Elke rekening heeft een eigenaar en een saldo, maar je wilt dat het saldo beschermd is tegen directe toegang. Het doel is om privé-eigenschappen te gebruiken om onbedoelde wijzigingen aan het saldo te voorkomen, terwijl gecontroleerde toegang via methoden mogelijk blijft.
- Privé saldo-eigenschap:
- Declareer binnen de
BankAccount-klasse een privé-eigenschap#balance.
- Declareer binnen de
- Constructor:
- De constructor accepteert
ownereninitialBalanceals parameters; - Wijs
ownertoe aan een publieke eigenschap eninitialBalanceaan de privé-eigenschap#balance.
- De constructor accepteert
- Methoden toevoegen:
- deposit: Definieer een methode die
amountals parameter neemt. Als het bedrag groter is dan 0, voeg danamounttoe aan#balance; - withdraw: Definieer een methode die
amountals parameter neemt. Als het bedrag groter is dan 0 en kleiner dan of gelijk aan#balance, trek danamountaf van#balance; - getBalance: Definieer een methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo, bijvoorbeeld:
"Account balance for John: $1500".
- deposit: Definieer een methode die
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);
- Declareer een privé-eigenschap
#balancein deBankAccount-klasse; - Wijs in de constructor
ownertoe aan een publieke eigenschap eninitialBalanceaan de privé-eigenschap#balance; - Definieer een
deposit-methode dieamountals parameter neemt. Controleer ofamountgroter is dan 0 en voeg danamounttoe aan#balance; - Definieer een
withdraw-methode dieamountals parameter neemt. Controleer ofamountgroter is dan 0 en kleiner dan of gelijk aan#balance, trek danamountaf van#balance; - Definieer een
getBalance-methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo.
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);
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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
Uitdaging: Implementeer Privé-Eigenschappen in een Klasse
Veeg om het menu te tonen
Taak
Je maakt een BankAccount-klasse om bankrekeningen van gebruikers veilig te beheren. Elke rekening heeft een eigenaar en een saldo, maar je wilt dat het saldo beschermd is tegen directe toegang. Het doel is om privé-eigenschappen te gebruiken om onbedoelde wijzigingen aan het saldo te voorkomen, terwijl gecontroleerde toegang via methoden mogelijk blijft.
- Privé saldo-eigenschap:
- Declareer binnen de
BankAccount-klasse een privé-eigenschap#balance.
- Declareer binnen de
- Constructor:
- De constructor accepteert
ownereninitialBalanceals parameters; - Wijs
ownertoe aan een publieke eigenschap eninitialBalanceaan de privé-eigenschap#balance.
- De constructor accepteert
- Methoden toevoegen:
- deposit: Definieer een methode die
amountals parameter neemt. Als het bedrag groter is dan 0, voeg danamounttoe aan#balance; - withdraw: Definieer een methode die
amountals parameter neemt. Als het bedrag groter is dan 0 en kleiner dan of gelijk aan#balance, trek danamountaf van#balance; - getBalance: Definieer een methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo, bijvoorbeeld:
"Account balance for John: $1500".
- deposit: Definieer een methode die
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);
- Declareer een privé-eigenschap
#balancein deBankAccount-klasse; - Wijs in de constructor
ownertoe aan een publieke eigenschap eninitialBalanceaan de privé-eigenschap#balance; - Definieer een
deposit-methode dieamountals parameter neemt. Controleer ofamountgroter is dan 0 en voeg danamounttoe aan#balance; - Definieer een
withdraw-methode dieamountals parameter neemt. Controleer ofamountgroter is dan 0 en kleiner dan of gelijk aan#balance, trek danamountaf van#balance; - Definieer een
getBalance-methode die een string retourneert met de naam van de eigenaar en het rekeningsaldo.
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);
Bedankt voor je feedback!