2.1.1. Encapsulación
Ejemplo 1. Encapsulación. Agrupación, Ocultación y Control Interno de Datos
Se refiere a la agrupación de datos y métodos que operan sobre esos datos dentro de una misma unidad, llamada clase. Además, la encapsulación implica ocultar los detalles internos de la implementación y exponer solo lo necesario a través de una interfaz pública.
2.1.2. Abstracción
2.1.2.1 Implementando la Abstracción
Ejemplo 1. Clase Abstracta
Este concepto se refiere al proceso de ocultar los detalles de implementación complejos y mostrar solo las funcionalidades esenciales de un objeto. La abstracción permite a los programadores centrarse en lo que un objeto debe hacer, sin preocuparse por cómo lo hace.
2.1.3. Herencia
Ejemplo 1. Herencia prototípica en JavaScript
Cada objeto en JavaScript tiene un enlace interno a otro objeto llamado prototipo. Cuando se intenta acceder a una propiedad o método en un objeto, JavaScript busca primero en el propio objeto y luego en su prototipo, y así sucesivamente hasta llegar a null.
Ejemplo 2. Herencia en JavaScript utilizando la sintaxis de clases de ES6
La herencia en JavaScript es un mecanismo que permite a una clase (o función constructora) heredar propiedades y métodos de otra clase. Esto facilita la reutilización de código y la creación de estructuras más complejas a partir de componentes más simples. JavaScript implementa la herencia principalmente a través de la cadena de prototipos y, más recientemente, mediante la sintaxis de clases introducida en ECMAScript 6 (ES6).
Ejemplo 3. Herencia. Creando la clase Truck y sus derivadas hijas
El polimorfismo es un concepto fundamental en la Programación Orientada a Objetos (POO)
que permite que diferentes objetos sean tratados como instancias de una misma clase base,
incluso si esos objetos son de clases derivadas diferentes. En JavaScript, el polimorfismo
se refiere a la capacidad de una función o método para operar en diferentes objetos
de manera uniforme, siempre que esos objetos compartan una propiedad o método común.
El polimorfismo permite que una misma operación se ejecute de diferentes maneras
según el objeto que la invoque. Esto se logra mediante la herencia y la
sobrescritura de métodos en las clases derivadas.
Ejemplo 1. Ejemplo Básico de Polimorfismo en JavaScript
2.1.5 Tipos de Polimorfismo en JavaScript
Aunque no se ajustan estrictamente a las categorías tradicionales, en JavaScript podemos identificar los siguientes tipos de polimorfismo.
2.1.5.1 Polimorfismo por Subtipos (Herencia Prototípica)
Ejemplo 1. Polimorfismo por Subtipos
2.1.5.2 Polimorfismo Paramétrico (Funciones de Orden Superior)
Ejemplo 1. Polimorfismo Paramétrico
2.1.5.3 Polimorfismo Ad Hoc (Duck Typing)
Ejemplo 1. Polimorfismo Ad Hoc
2.1.5.4 Polimorfismo Dinámico en Acción
Ejemplo 1. Un Restaurant
2.3 Objetos y Constructores
Los objetos son una forma fundamental de organizar y manipular datos. Existen dos métodos principales para crear objetos: mediante literales de objeto y funciones constructoras
2.3.1 Creación de objetos.
2.3.1.1 Creación de objetos mediante literales de objeto ({})
Un literal de objeto se define utilizando llaves {} y especificando pares clave-valor. Este método es ideal para crear objetos únicos y simples.
Ejemplo 1. Creación de un objeto mediante un literal de objeto
2.3.1.2 Creación de Objetos mediante Funciones Constructoras
Las funciones constructoras son útiles para crear múltiples objetos con las mismas propiedades y métodos. Se definen como funciones normales, pero se utilizan con la palabra clave new
Ejemplo 1. Definición de una función constructora