Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Consulta sobre Get y Set

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;
}
1 respuesta

Hola Walter, espero que estés muy bien.

Bueno, el objeto Set permite almacenar valores únicos de cualquier tipo, incluso valores primitivos o referencias a objetos.

Y el Get enlaza la propiedad de un objeto con una función que será llamada cuando la propiedad es buscada.

Abajo te dejo dos articulos que te pueden ayudar a entender mejor el uso de los dos:

https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Set

https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Functions/get

Un saludo!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios