Los cuatro pilares de la programación orientada a objetos
On septiembre 27, 2021 by adminEn este blog explicaré los 4 pilares de la POO y proporcionaré pequeños ejemplos. Ejemplos lo suficientemente pequeños como para que tú y yo podamos comprenderlos fácilmente.
La abstracción es esencialmente «necesidad de saber». Ocultamos los principales detalles de implementación, mientras mantenemos el uso obvio en primer plano. Así que recuerda este «ocultar los detalles, mostrar la relevancia».
Ejemplo de abstracción…
Este es un formulario de registro de una aplicación en la que estoy trabajando (la relevancia).
Esta es la lógica de implementación del envío del formulario. (la necesidad de saber).
Polimorfismo
El polimorfismo es cuando se utiliza un bloque de código, se cambia la versión del código que se utiliza en función de las entradas que se le están dando. Así que para hacerlo un poco más claro, diferentes clases se pueden utilizar con la misma interfaz, pero puede proporcionar su propia implementación de esa interfaz.
Ejemplo de polimorfismo…
class Animal { speak = () => console.log('makes sound')}class Dog extends Animal { speak = () => console.log('woof')}class Cat extends Animal { speak = () => console.log('meowww')}class Cow extends Animal { speak = () => console.log('moooooo')}let dog1 = new Dog()let cat1 = new Cat()let cow1 = new Cow()dog1.speak() // => woofcat1.speak() // => meowwwcow1.speak() // => moooooo
Las clases Gato, Perro y Vaca están heredando de la clase Animal. Esto permite a las clases Gato, Perro y Vaca utilizar la interfaz de la clase Animal. Sin embargo, sólo tienen disponible el método speak. Si dejáramos el método speak fuera de las clases Cat, Dog y Cow, y luego creáramos instancias de las clases Cat, Dog y Cow, todavía podríamos llamar al método speak en esas instancias. El único problema es que se imprimiría el sonido Animals ‘makes sound’ en lugar de los sonidos apropiados que hacen un Gato, un Perro y una Vaca (‘meow’, ‘woof’, ‘moo’).
Aquí es donde entra en juego el método overriding. Si redefinimos el método speak en las clases Cat, Dog y Cow, podemos personalizarlo para que imprima los sonidos que hacen los gatos y los perros.
Encapsulación
La encapsulación une los datos y las funciones que manipulan los datos, y eso mantiene a ambos a salvo de interferencias externas y de un mal uso. Un buen ejemplo de encapsulación es una clase. De hecho, podemos referirnos al ejemplo anterior en el que hablamos de Perros, Gatos y Vacas con algunas ligeras modificaciones.
class Dog { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cat { constructor(name) { this.name = name } printName = () => console.log(this.name)}class Cow { constructor(name) { this.name = name } printName = () => console.log(this.name)}let dog1 = new Dog()dog1.name = "Max"dog1.printName() // => Maxlet cat1 = new Cat()cat1.name = "Mark"cat1.printName() // => Marklet cow1 = new Cow()cow1.name = "Tom"cow1.printName() // => Tom
Nota que cuando creamos instancias para cada animal también asignamos un nombre a cada una. La conclusión es que los ‘.name’ después de cada instancia creada (por ejemplo, perro1.name) son todos diferentes. Esos ‘.name’ están encapsulados dentro de sus clases correspondientes. Asignar un nombre a una instancia no modifica el valor del nombre de ninguna otra instancia.
Herencia
La herencia es probablemente la más fácil de entender. La herencia es el concepto de una clase que utiliza (hereda) la interfaz de otra clase. Entonces se convierte en un niño o subclase, mientras que la clase que está heredando es el padre o superclase. De hecho, hemos heredado algo en nuestro segundo ejemplo. Las clases Gato, Perro y Vaca heredan de la clase Animal para tener acceso al método speak. Sólo asegúrese de añadir la palabra clave extends.
Deja una respuesta