POO-Componentes Principales

Los scripts de estos ejercicios se encuentran en el Capitulo 2 del Libro 3 "Programando Paso a Paso y Mas"

Los libros 1, 2 y 3 están a la venta en Amazon

Energyner

Encapsulación, Abstracción y Herencia

2.1 Introducción a la Programación Orientada a Objetos en JavaScript

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

Polimorfismo

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

Objetos y Constructores

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