No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Encapsulamiento en JavaScript: Uso de Getters y Setters

11/20
Recursos

¿Qué es el encapsulamiento en la programación orientada a objetos?

El encapsulamiento es uno de los pilares fundamentales de la programación orientada a objetos. Se trata de proteger y organizar los datos y métodos de los objetos, limitando el acceso a sus atributos y propiedades. Imagina un banco: los clientes no deben tener acceso directo a su dinero sin pasar por un filtro de seguridad. Del mismo modo, el encapsulamiento actúa como un guardián que asegura que la interacción con los objetos se realice de manera controlada y segura.

¿Por qué es importante el encapsulamiento?

  • Protección de datos: Al encapsular, protegemos los datos sensibles de cambios no autorizados.
  • Prevención de errores: El encapsulamiento permite verificar las operaciones realizadas en un objeto, asegurándote de que se efectúen correctamente.
  • Modularidad: Hace que las clases sean más modulares y fáciles de gestionar.
  • Facilita el mantenimiento: Si la implementación interna cambia, las interacciones externas no se ven afectadas, lo que también mejora la escalabilidad.

¿Cómo se implementa el encapsulamiento en JavaScript?

En JavaScript, realmente no existen atributos y métodos completamente privados. Sin embargo, hay ciertas técnicas que podemos utilizar para aproximarnos al encapsulamiento:

Getters y setters

Son métodos especiales que permiten controlar el acceso a los atributos de un objeto. Aunque todos los atributos en JavaScript son públicos, los getters y setters permiten manipular cómo se accede y se modifica un atributo, añadiendo una capa de control.

class Banco {
  constructor() {
    this._saldo = 0;
  }

  get saldo() {
    return this._saldo;
  }
  
  set saldo(valor) {
    if(valor >= 0) {
      this._saldo = valor;
    } else {
      console.log("El saldo no puede ser negativo.");
    }
  }
}

let cuenta = new Banco();
cuenta.saldo = 1000; // Usa el setter
console.log(cuenta.saldo); // Usa el getter: 1000

Namespaces y el patrón módulo

Utilizando namespaces y el patrón módulo, fragmentamos funcionalidades en diferentes módulos. Esto facilita la protección y mantenimiento de las funciones y variables dentro de un mismo contexto.

Uso de Object.defineProperty()

Esta es una técnica avanzada que nos permite definir propiedades en un objeto con configuraciones precisas, como definir si una propiedad es enumerable, configurable o incluso si es posible modificarla.

const objeto = {};
Object.defineProperty(objeto, 'propiedad', {
  value: 100,
  writable: false, // No puede ser alterada
  enumerable: true,
  configurable: false
});

Módulos de ECMAScript 6

Los módulos en ECMAScript 6 permiten dividir el código en archivos separados y controlar qué partes de nuestro código están disponibles para ser importadas por otras partes. Esto ayuda a encapsular funcionalidad y mantener el código organizado y aislado.

// archivo modulo.js
export function sumar(a, b) {
  return a + b;
}

// archivo principal.js
import { sumar } from './modulo.js';
console.log(sumar(2, 3)); // Salida: 5

¿Cuáles son las limitaciones del encapsulamiento en JavaScript?

  • Visibilidad pública: Todas las propiedades en JavaScript son públicas por defecto.
  • Necesidad de técnicas avanzadas: Lograr un encapsulamiento más cercano al concepto clásico de POO requiere un conocimiento más profundo de técnicas avanzadas y puede complejizar el código.
  • Exposición a la manipulación del prototipo: A pesar de las técnicas mencionadas, los prototipos en JavaScript siguen siendo manipulables, lo que puede complicar el encapsulamiento auténtico.

A pesar de estas limitaciones, las estrategias que hemos abordado ofrecen formas efectivas de acercarnos al encapsulamiento en el entorno flexible y dinámico de JavaScript. Si estás motivado para seguir aprendiendo, sigue investigando y aplicando estas técnicas para dominar mejor la gestión de datos seguros en tus aplicaciones.

Aportes 26

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¿Qué es encapsulamiento?
Es guardar, proteger, guardar o limitar el acceso de cierto atributos y/o propiedades en nuestros prototipos y objetos.

Cuando hablamos de **encapsulamiento **hablamos de:

  • Esconder métodos y atributos 👻

  • No permitir la alteración de métodos y atributos ❌

Encapsulamiento en JavaScript

  • No permitir la alteración de métodos y atributos ❌

Formas de aplicar encapsulamiento en JavaScript

  • Getters y setters 🖐

  • Namespaces 🙂

  • Object.defineProperties 🎈

  • Módulo de ES6 🤝

Encapsulación
La encapsulación es el empaquetamiento de datos y funciones en un componente (por ejemplo, una clase) y para luego controlar el acceso a ese componente para hacer un ejecto de “caja negra” fuera del objeto. Debido a esto, un usuario de esa clase solo necesita conocer su interfaz (es decir, los datos y las funciones expuestas fuera de la clase), no la implementación oculta.

¿QUÉ ES ENCAPSULAMIENTO?
·
Es la forma de proteger, encapsular, guardar, limitar, esconder el acceso de ciertos atributos y propiedades de nuestros objetos.

  1. Esto nos permite crear métodos y atributos privados. Solamente los métodos y atributos que se encuentren dentro de la clase podrán acceder a estos datos privados.
  2. Así, nosotros podemos prevenir la sobreescritura o alteración de métodos y atributos, de las clases, de los objetos, o los prototipos incluso, o sea las instancias creadas.
    ·
    Pero… en JavaScript, el encapsulamiento no es tan posible. Porque en JS todo es público. Y aunque nos lo puede permitir, debemos tener un dominio más profundo del prototipo Object para lograrlo… otros métodos son usando getters & setters, Namespaces, Object.defineProperties, módulos de ES6.

Primera vez que veo un curso de POO de js superbuenísimo!

En términos de POO, la delimitación de la interfaz interna de la externa se llama encapsulamiento.

Ejemplo:

Protección para los usuarios, para que no se disparen en el pie: Imagínese, hay un equipo de desarrolladores que usan una máquina de café. Fue hecho por la compañía “Best CoffeeMachine” y funciona bien, pero se quitó una cubierta protectora. Entonces la interfaz interna está expuesta.

1. Soportable

Si delimitamos estrictamente la interfaz interna, el desarrollador de la clase puede cambiar libremente sus propiedades y métodos internos, incluso sin informar a los usuarios.

2. Ocultando complejidad

Siempre es conveniente cuando los detalles de implementación están ocultos, y hay disponible una interfaz externa simple y bien documentada.

Y esto nos lleva a otros conceptos tales como las propiedades privadas y publicas

💊 Qué es encapsulamiento

Apuntes

  • El encapsulamiento es crear una intersección, la cual se encargará de administrar, verificar la acciones que se realicen entre nuestra interfaz y el usuario
  • Se encarga de guardar, proteger, guardar o limitar el acceso de ciertos atributos y/o propiedades en nuestros prototipos y objeto
  • Las características de encapsulamiento son:
    1. Esconder métodos y atributos
      • Solo lo que está dentro de nuestra clase podrá acceder a dichos métodos o propiedades, es decir que externamente no se podrá acceder
    2. No permitir la alteración de métodos y atributos
      • Desde afuera podemos alterar o sobreescribir los comportamientos de instancias o prototipos

Encapsulamiento en JavaScript

  • Cuando hablamos de esconder métodos y atributos en JavaScript, no es posible debido a que todo en JS es público
    • Existen formas de encapsular en JS:
      1. Getters y setters
      2. Namespaces
      3. Object.defineProperties
      4. Módulos de ES6
📌 **RESUMEN:** El encapsulamiento es uno de los pilares de la programación orientada a objetos, este sé encargar de guardar, proteger y limitar acceso ya sea a atributos o métodos. Sus características son de esconder y no permitir la alteración de métodos y propiedades.

Con esto de encapsular. Me viene a la mente el juego Habbo Hotel:

Ciertos usuarios podrían usar métodos y atributos de algunas salas. O sea, podían dejar pasar a otros players, poner música, entrar a ciertos cuartos o funciones de la casa…

Los demás solo podían ver o simplemente no saber nada de lo que pasaba.

El encapsulamiento de datos previene que el desarrollador haga cambios inesperados al sistema, como también ocultar la información para que no pueda ser modificada o vista por otras clases y esto es muy útil pero además fácil de hacer, como aprenderemos en la lección de hoy.

¿Cómo accedemos a dicha información de forma segura? En el desarrollo de esta clase van a explicarte cómo podemos modificar de forma segura las propiedades (o variables) de una clase y cómo podemos presentar dicha información al usuario de una forma correcta con el uso de métodos conocidos como Setters y Getters.

La abstracción es la habilidad de ignorar los detalles de las partes para enfocar la atención
en un nivel más alto de un problema.
El encapsulamiento sucede cuando algo es envuelto en una capa protectora. Cuando el
encapsulamiento se aplica a los objetos, significa que los datos del objeto están protegidos,
“ocultos” dentro del objeto. Con los datos ocultos, ¿cómo puede el resto del programa
acceder a ellos? (El acceso a los datos de un objeto se refiere a leerlos o modificarlos.) El
resto del programa no puede acceder de manera directa a los datos de un objeto; lo tiene
que hacer con ayuda de los métodos del objeto.
En el supuesto de que los métodos de un objeto estén bien escritos, los métodos aseguran
que se pueda acceder a los datos de manera adecuada. Al hecho de empaquetar o proteger
los datos o atributos con los métodos se denomina encapsulamiento.

Encapsulamiento : Este se considera el mecanismo de unir los datos y ocultarlos del mundo exterior. Esto se debe a que nosotros como programadores no permitimos que los datos fluyan libremente dentro del sistema. El proposito de encapsulamiento de lo que he estudiado son al menos los siguientes:

  • Poner resticciones en su lugar para que no se pueda acceder directamente a los componentes de un objeto.
  • Vincular los datos con metodos que actuarán sobre esos datos formando una cápsula.
    Viendo este criterio se puede observar al encapsulamiento como metodos que nos sirven como la interfaz entre el objeto y el mundo exterior.

📌 El Encapsulamiento se refiere al ocultamiento o limitación de propiedades de un prototipo, al ocultar o no permitir la alteración de algunos de sus métodos y atributos

Se utiliza para ocultar el objeto del exterior. Este aislamiento hace que los datos (propiedades) del objeto sólo puedan gestionarse con las operaciones (métodos) definidos en ese objeto. Se decía que JavaScript no podía ocultar y/o encapsular datos porque los objetos no podían tener variables y métodos privados como sucede Java y otros lenguajes. Douglas Crockford fue uno de los que echó abajo este mito tal como expone en el documento del año 2001 Private members in JavaScript, lo cual se consigue precisamente con el efecto closure. Por otro lado JavaScript no tiene clases como Java, pero se simulan con funciones que hacen las veces de constructores.

Juan buen dia, queria darte las gracias porque explicas super bien la verdad que uno comprende muy bien coo explicas aunque en mi humilde opinion el taller de matematicas y taller de video juegos deberia ir despues de haber estudiados POO y arrays porque ahi en ese curso jejej uno ve tanta cosa que queda mas perdido que la mama del chavo pero muchisimas Gracias explicas 1A

Uno de los objetivos más importantes de la Programación Orientada a Objetos, el cuál es poder proteger y ocultar información, a dicho proceso se le denomina encapsulamiento.

Wow no puedo esperar por aprender namespaces y Object.defineProperties, el otro curso al parecer estará demasiado bueno

No viene al caso, bueno, viene medio al caso: había alguien de prácticas aprendiendo en mi oficina del banco e hizo una transacción con un 0 extra en el importe 👁👄👁 (un número muy, muy grande). Por suerte, lo que dice Juan, gracias al registro de la plataforma se pudo solucionar antes de que la orden se ejecutara.

Encapsular es restringir u ocultar el acceso a datos . Sólo podrán ser accedidos por la clase.

**Encapsular
**

  • Esconder métodos y atributos

  • No permitir la alteración de métodos y atributos

Encapsular:

  • Esconder métodos y atributos.
  • No permitir la alteración de métodos y atributos.

Encapsular en JS

  • Getters y setters
  • Namespaces
  • Object.defineProperties
  • Módulos de ES6

Encapsulamiento, controlar el acceso a los datos y funciones de una clase, no lo veo muy claro en JS

Encapsulamiento

Es el proceso de almacenar en una misma sección los elementos de una abstracción que constituyen su estructura y su comportamiento; sirve para separar el interfaz contractual de una abstracción y su implantación. Esto se consigue a través de la ocultación de información, ocultación de información es el proceso de ocultar «Todos los Secretos» de un objeto que no aportan a sus características específicas.

Para que la abstracción funcione como debe, la implementación debe estar encapsulada, nunca está de más recordar que cada clase debe tener dos partes, una interfaz y una implementación

Encapsular → esconder

Encapsulamiento.- Proteger datos, información, en este caso atributos y métodos de nuestros objetos. En JavaScript, no podemos esconder del todo a nuestros métodos y atributos, pero si podemos impedir que estos sean modificados desde fuera, limitando el acceso a estos.