Módulo 5
"Programación Orientada a Objetos"
La programación orientada a objetos (POO) es un paradigma de programación que se basa en la creación de objetos que interactúan entre sí para realizar una tarea. Los objetos son entidades que tienen características o propiedades (llamadas atributos) y pueden realizar acciones (llamadas métodos). La POO se enfoca en la modularidad y la reutilización de código, lo que la hace muy útil para proyectos grandes y complejos. Los objetos se crean a partir de una clase, que actúa como una plantilla o molde para la creación de los objetos.
Objetos
En JavaScript, los objetos se pueden declarar de varias maneras, pero la forma más común es utilizando la sintaxis de llaves o corchetes. Por ejemplo:
const miObjeto = {
propiedad1 = valor1,
propiedad2 = valor2
}
const miObjeto = new Object();
miOtroObjeto.propiedad1 = valor1;
miOtroObjeto.propiedad2 = valor2;
Un objeto en JavaScript es una entidad que puede almacenar datos y funciones relacionados entre sí. Los datos se almacenan en propiedades, que pueden ser de diferentes tipos de datos, como números, cadenas, arreglos o incluso otros objetos. Las funciones se almacenan en métodos, que son propiedades que contienen funciones.
Los objetos son muy versátiles y se utilizan ampliamente en JavaScript para modelar conceptos del mundo real y para organizar y manipular datos de manera eficiente en las aplicaciones web.
Abstracción y encapsulamiento
Getters y setters
Los getters y setters son construcciones de los objetos que permiten acceder a valores del mismo sin revelar la forma de su implementación.
Los Getters se usan para acceder a las propiedades en un objeto.
Los Setters para cambiar o silenciar una propiedad en un objeto.
Herencia
La herencia nos permite crear “moldes madre” para crear otros prototipos a partir de la clase padre. Esto nos ayuda cuando queremos clasificar un grupo de prototipos los cuales queremos que tengan comportamientos bastante similares, pero cada uno con cierta particularidad.
Tambien para poder lograr una herencuia entre una clase padre a otra subclase, la palabra clave extends se puede usar para crear una subclase a partir de clases personalizadas, así como sus objetos incorporados. La propiedad prototype de la nueva subclase debe ser un Object o null .
Polimorfismo
En JavaScript, podemos lograr polimorfismo a través del uso de funciones y objetos.
Por ejemplo, si tenemos dos objetos diferentes que tienen una propiedad en común, podemos escribir una función que acepte cualquiera de los dos objetos como argumento y que utilice la propiedad común para realizar alguna tarea. De esta manera, la función es polimórfica ya que puede trabajar con objetos de diferentes tipos pero que comparten una propiedad común.
En JavaScript, también podemos lograr polimorfismo utilizando herencia. Por ejemplo, podemos tener una clase base que define un método, y luego crear subclases que heredan de la clase base y que sobrescriben el método para proporcionar un comportamiento específico para cada subclase.