Hola! para el acceso de los atributos privados de una clase con 'set' y 'get', estas palabras reservadas se las utiliza para tener una sintaxis mas simple y que sea mas legible, no? para poder modificar(set) o obtener(get) los atributos con una sola palabra en este tipo de método particular. Ya que con métodos propiamente dichos se puede obtener el mismo resultado, pero cada método tiene que tener su nombre que lo identifique para obtener o modificar un atributo. En el ejemplo siguiente, el atributo privado '#cliente' de 'cuentaCorriente' de Leonardo fue modificado con el método '.setCliente()', y el atributo privado '#cliente' de 'cuentaCorriente' de María fue modificado con el tipo de método particular 'get'
//Archivo index.js
// Importamos las clases desde otro archivo
import { Cliente } from './cliente.js'
import { CuentaCorriente } from './cuentaCorriente.js'
const usuario = new Cliente();
usuario.nombreCliente = 'Leonardo';
usuario.dniCliente = 2567898;
usuario.rutCliente = 32343;
const cuentaDeLeonardo = new CuentaCorriente();
cuentaDeLeonardo.numero = 1;
cuentaDeLeonardo.agencia = 125;
// Inicializando atributo con metodo '.setCliente()' de 'cuentaCorriente'
cuentaDeLeonardo.setCliente(usuario);
const usuario2 = new Cliente();
usuario2.nombreCliente = 'Maria';
usuario2.dniCliente = 24569756;
usuario2.rutCliente = 5423;
const cuentaDeMaria = new CuentaCorriente();
cuentaDeMaria.numero = 2;
cuentaDeMaria.agencia = 125;
// Inicializando atributo con 'set'
cuentaDeMaria.cliente = usuario2;
console.log("Salida por consola con el metodo '.getCliente()' de 'cuentaCorriente'");
console.log(cuentaDeLeonardo.getCliente());
console.log("Salida por consola con el 'metodo get'");
console.log(cuentaDeMaria.cliente);
// archivo CuentaCorriente.js
import { Cliente } from "./cliente.js";
export class CuentaCorriente {
#cliente;
numero;
agencia;
#saldo;
constructor() {
this.#cliente = null;
this.numero = '';
this.agencia = '';
this.#saldo = 0;
}
/* Metodos 'set' y 'get' para modificar y acceder a atributos privados */
set cliente(valor) {
if (valor instanceof Cliente) this.#cliente = valor;
}
get cliente() {
return this.#cliente;
}
/* ********************************************************************* */
/*Métodos para modificar y acceder a atributos privados */
setCliente(valor) {
if (valor instanceof Cliente) this.#cliente = valor;
}
getCliente() {
return this.#cliente;
}
/* ********************************************************************* */
depositoEnCuenta(valor) {
if (valor < 0) {
console.log("No puedes hacer depositos de cantidades negativas");
} else {
this.#saldo += valor;
console.log("Deposito exitoso!,tu nuevo saldo es " + this.#saldo);
}
}
retiroDeCuenta(valor) {
if (valor <= this.#saldo) {
this.#saldo -= valor;
console.log("Retiro realizado con exito, tu nuevo saldo es " + this.#saldo);
} else {
console.log("Saldo insuficiente, no se puede completar el retiro...");
}
}
verSaldo() {
return this.#saldo;
}
tranferenciaCuentas(valor, destino) {
if (valor <= this.#saldo) {
console.log("Realizando transferencia de dinero ... ");
this.retiroDeCuenta(valor);
destino.depositoEnCuenta(valor);
console.log("Transferencia exitosa!. Tu nuevo saldo es " + this.#saldo);
} else {
console.log("Saldo insuficiente, no es posible realizar la transferencia");
console.log("Tu saldo es " + this.#saldo);
}
}
}
// Archivo cliente.js
export class Cliente
{
nombreCliente;
dniCliente;
rutCliente;
}