Desafío: Implementar Propiedades Privadas en una Clase
Tarea
Se está creando una clase BankAccount para gestionar las cuentas bancarias de los usuarios de forma segura. Cada cuenta tiene un propietario y un saldo, pero se desea que el saldo esté protegido contra el acceso directo. El objetivo es utilizar propiedades privadas para evitar modificaciones no intencionadas del saldo, permitiendo el acceso controlado a través de métodos.
- Propiedad privada de saldo:
- Dentro de la clase
BankAccount, declarar una propiedad privada#balance.
- Dentro de la clase
- Constructor:
- El constructor debe aceptar
ownereinitialBalancecomo parámetros; - Asignar
ownera una propiedad pública yinitialBalancea la propiedad privada#balance.
- El constructor debe aceptar
- Agregar métodos:
- deposit: Definir un método que reciba
amountcomo parámetro. Si la cantidad es mayor que 0, debe sumaramounta#balance; - withdraw: Definir un método que reciba
amountcomo parámetro. Si la cantidad es mayor que 0 y menor o igual a#balance, debe restaramountde#balance; - getBalance: Definir un método que devuelva una cadena con el nombre del propietario y el saldo de la cuenta, por ejemplo,
"Account balance for John: $1500".
- deposit: Definir un método que reciba
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);
- Declarar una propiedad privada
#balanceen la claseBankAccount; - En el constructor, asignar
ownera una propiedad pública yinitialBalancea la propiedad privada#balance; - Definir un método
depositque recibaamountcomo parámetro. Comprobar siamountes mayor que 0, luego sumaramounta#balance; - Definir un método
withdrawque recibaamountcomo parámetro. Comprobar siamountes mayor que 0 y menor o igual a#balance, luego restaramountde#balance; - Definir un método
getBalanceque devuelva una cadena con el nombre del propietario y el saldo de la cuenta.
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);
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Desafío: Implementar Propiedades Privadas en una Clase
Desliza para mostrar el menú
Tarea
Se está creando una clase BankAccount para gestionar las cuentas bancarias de los usuarios de forma segura. Cada cuenta tiene un propietario y un saldo, pero se desea que el saldo esté protegido contra el acceso directo. El objetivo es utilizar propiedades privadas para evitar modificaciones no intencionadas del saldo, permitiendo el acceso controlado a través de métodos.
- Propiedad privada de saldo:
- Dentro de la clase
BankAccount, declarar una propiedad privada#balance.
- Dentro de la clase
- Constructor:
- El constructor debe aceptar
ownereinitialBalancecomo parámetros; - Asignar
ownera una propiedad pública yinitialBalancea la propiedad privada#balance.
- El constructor debe aceptar
- Agregar métodos:
- deposit: Definir un método que reciba
amountcomo parámetro. Si la cantidad es mayor que 0, debe sumaramounta#balance; - withdraw: Definir un método que reciba
amountcomo parámetro. Si la cantidad es mayor que 0 y menor o igual a#balance, debe restaramountde#balance; - getBalance: Definir un método que devuelva una cadena con el nombre del propietario y el saldo de la cuenta, por ejemplo,
"Account balance for John: $1500".
- deposit: Definir un método que reciba
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);
- Declarar una propiedad privada
#balanceen la claseBankAccount; - En el constructor, asignar
ownera una propiedad pública yinitialBalancea la propiedad privada#balance; - Definir un método
depositque recibaamountcomo parámetro. Comprobar siamountes mayor que 0, luego sumaramounta#balance; - Definir un método
withdrawque recibaamountcomo parámetro. Comprobar siamountes mayor que 0 y menor o igual a#balance, luego restaramountde#balance; - Definir un método
getBalanceque devuelva una cadena con el nombre del propietario y el saldo de la cuenta.
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);
¡Gracias por tus comentarios!