Programación orientada a objetos (POO) Parte 2:

Abstracción:

El proceso de abstracción es pensar que atributos y que métodos debe tener nuestro objeto, como veíamos en el ejemplo de la Parte 1 de esta articulo nuestro objeto "Calcetines":

Con esto cubrimos las necesidades que tengamos en nuestra aplicación como el caso del control de los calcetines podemos ver que necesitamos como atributos: Precio, Color, Talla, Marca. Y como Métodos: Agregar al carrito, Eliminar del carrito, Editar.

Con la abstracción de este objeto ya podemos mostrarle al usuario en la tienda los calcetines con sus propiedades e incluso interactuar con el carrito de compras.

Cuando estés creando algún sistema, es algo que harás si o si, abstraer distintas funcionalidades y objetos para cumplir con los requisitos del sistema que estés creando.

Encapsulamiento:

Como hemos visto con el paradigma POO, los objetos se comunican entre ellos, esto nos hace más fácil la forma en que interactuamos una funcionalidad u objeto con otro, pero esto también podría traer problemas de seguridad si un objeto pudiera modificar los datos de cualquier otro objeto, para esto necesitamos proteger la información de manipulaciones no autorizadas. Entonces cuando se comunican los objetos existen caminos que se pueden seguir y caminos que no.

Datos protegidos, datos privados, datos públicos, métodos para solo acceder a cierta información, objetos que no pueden acceder a cierta información o ciertos métodos de otros objetos de esta manera es como se organiza el sistema.

Como podemos ver en esta ilustración vemos que el objeto calcetines tiene sus métodos públicos y métodos privados donde el objeto carrito de compras no puede acceder a los métodos privados ya que a él no le debe interesar ese método porque no lo necesita.

Imagina que cualquier objeto pueda acceder a cualquier información, cualquier cambio que no se deba hacer podría hacer que colapse tu aplicación.

A todo esto de protección de datos y protección de funcionalidad se le llama "Encapsulamiento".

Polimorfismo:

Imagina que en nuestra tienda de calcetines al implementar el carrito de compras queremos que los clientes puedan agregar diferentes tipos de calcetines y luego calcular el total de la compra. En esta parte aplica el polimorfismo. Ya que el polimorfismo se refiere a la capacidad de diferentes objetos responder a un mismo método de manera distinta.

En nuestro caso podemos elegir cada tipo de calcetín por ejemplo: calcetín normal, calcetín deportivo, calcetín de lana cada uno puede tener un precio diferente y queremos que el carrito sea capaz de calcular el total de la compra sin importar el tipo de calcetín que se agregue.

Como podemos ver en este ejemplo, tenemos nuestros tipos de calcetín que heredan de nuestra clase o plantilla calcetín, esto quiere decir que tenemos sus atributos y métodos del objeto calcetín, con esto podemos compartir la lógica del método Calcular_total( ) sin importar el tipo de calcetín y esto es lo que nos permite el polimorfismo que diferentes objetos respondan al mismo método.

Ya que internamente el método Calcular_total( ), no le importa si es un calcetín normal o un calcetín deportivo, para obtener un total a él lo que le importaría sería solo el precio y tal vez la cantidad para así poder hacer su operación y regresar el total.

Herencia:

Como su nombre lo dice, la herencia permite heredar atributos y funcionalidades de un objeto a otro vamos a verlo con un ejemplo:

Como pueden ver tenemos la clase Animal la cual como atributos tiene Nombre y Edad y como Método tiene Emitir_sonido(), esto es algo que tienen en común todos los animales, para esto se heredarían: los atributos y métodos que tienen en común el objeto Animal, pero esto no quiere decir que sea una copia sino que cada objeto aparte puede tener sus propios métodos y atributos como pueden verlo en la clase "Ave" aunque el ave es un animal también y tiene la funcionalidad de Emitir_sonido() y los atributos de Nombre y Edad, aparte puede tener otras funcionalidades como la que se muestra en la ilustración la cual es "Volar" y no todos los animales pueden hacerlo con esto vemos que no necesariamente tiene que ser una copia.

Espero que con esto quede claro lo que es la programación orientada a objetos y sus beneficos al utilizarla.

Estos enfoques los necesitaremos para los próximos posts y videos que estaré compartiendo por mi cuenta de YouTube donde aprenderemos a crear aplicaciones con Flutter una vez entendamos los conceptos básicos de la programación y temas de programación funcional que se necesitan para entender a profundidad como funciona Flutter.

Por último: estoy intentando llegar a los 1000 suscriptores en Facebook y estoy en proceso de crear comunidad, te agradecería que me siguieras en mis redes sociales y te unieras a mi servidor de Discord donde estaré publicando, cada que suba contenido nuevo, al igual podrías suscribirte a mi newsletter, te dejo mis links aquí abajo:

Discord: discord.gg/PVSayFhn

YouTube: youtube.com/@code-crushers

Facebook: facebook.com/isai.x.x

Did you find this article valuable?

Support Isaí Arellano by becoming a sponsor. Any amount is appreciated!