Cómo explicar POO con la metáfora de los Smartphones

Juan Pablo Rodríguez (ornitie)
3 min readMar 29, 2020

--

La Programación Orientada a Objetos (POO ó OOP por sus siglas en inglés) es un concepto sumamente utilizado hoy en día en diversos campos de la programación, puesto que muchos lenguajes fueron cimentados bajo estas buenas prácticas, siendo así uno de los conocimientos fundamentales en la programación moderna.

Sin embargo, a pesar de ser un concepto tan fundamental, y de haberse explicado hasta el cansancio de maneras específicas, generales, con metáforas y demás; quizás una explicación más plausible pueda ser utilizando elementos de nuestro día a día, los smartphones. Así que aquí traigo una explicación de los 4 pilares fundamentales de la POO utilizando teléfonos modernos como ejemplo.

Abstracción y facilidad de uso

La abstracción es el concepto mediante el cual, una clase no debería exponer su implementación al mundo, puesto que no es solo innecesario sino inseguro. Piensa en como, cada que compras tu nuevo teléfono, no piensas en cómo funcionan esos nucleos del procesador o como se almacena la información en la memoria RAM, simplemente sabes que tu teléfono tiene unas funcionalidades implementadas y vas a hacer uso de ellas.

Incluso, los desarrolladores móviles añaden incluso una capa adicional de abstracción utilizando las apps. No necesitas saber el funcionamiento interno de tu teléfono para abrir Facebook, solo debes clickear su logo en tu teléfono y dar like a ese adorable video de gatitos.

Encapsulamiento y privacidad

Si por un lado no quieres tener que lidiar con el funcionamiento de tu teléfono para poder utilizarlo eficientemente, por el otro, no quieres que cierta información se esté regando por ahí. El encapsulamiento es la práctica mediante la cual, la información relevante es almacenada con total privacidad y solo puede ser accedida mediante los métodos y funciones que se dispongan para ello.

Imagina que tienes tu teléfono guardado en tubolsillo y éste empieza a vibrar por un nuevo mensaje de WhatsApp, tú como buen usuario que eres, tienes tu teléfono bloqueado con tu huella dactilar. Ahora, al momento de sacar tu teléfono, observas la barra de notificaciones y solo aparece el ícono que te indica que ha llegado un nuevo mensaje de WhatsApp, mas no puedes ver el contenido del mensaje hasta que hagas uso de tu huella dactilar. Esto es encapsulamiento, puesto que la información privada puede ser accedida solo mediante esta capa de seguridad y no por cualquier otra persona.

Herencia, familiaridad y reutilización

¿Cuántas veces has aprendido a utilizar un smartphone?, la primera vez quizás parecía tecnología alienígena, la pantalla táctil, la cámara, el acceso a la red, todo empaquetado en tu bolsillo. Pues cada generación de teléfonos trae su gama de novedades, teléfonos que se doblan, con mil cámaras o con carga inalámbrica son novedosos hoy pero serán el estándar de mañana. Pero, ¿por qué no tienes que volver a aprender a usar tu teléfono cada que lo cambias?, pues porque las empresas que manufacturan teléfonos siguen un principio clave en el desarrollo moderno de cualquier tecnología: no reinventes la rueda, si hay una tecnología que ya existe y es funcional para el propósito que buscas, no crees otra versión, construye sobre la que ya existe.

Este es el principio de la herencia, si ya tenemos una clase que implementa un comportamiento básico y queremos crear otra que profundice su comportamiento de una manera diferente, solo tendremos que extender dicha clase y ya tendremos ese núcleo que nos ahorrará tiempo y código en replicar.

Polimorfismo y la batalla Android vs. iOS

Si yo quisiera hacer una llamada de un teléfono, quizás la interfaz gráfica de Android difiera de la que propone iOS, los accesos directos, la combinación de colores y diseño de botones puede cambiar, pero ultimadamente estás buscando una pantalla que te permita digitar unos números y presionar un número para marcar, es el mismo comportamiento que esperaríamos de un Nokia 1100 de décadas anteriores.

Polimorfismo es la capacidad que tiene un objeto de comportarse como cada una de las clases o interfaces que hereda o implementa, esto es la capacidad que tiene tu teléfono de hacer la más básica de sus funciones, una llamada telefónica, como hacían los Nokia antiguos, como la capacidad que tiene de comportarse como un computador moderno y hacer una videollamada al otro lado del planeta con muy poca latencia mediante un Zoom.

En conclusión

Si bien la POO ya se ha explicado de muchas otras formas con muchas otras metáforas, los tiempos cambian y quizás también deban hacerlo las metodologías de explicar Programación Orientada a Objetos, no todos conocemos la taxonomía del reino animal pero sí estamos más que familiarizados con nuestros teléfonos móviles.

--

--

Juan Pablo Rodríguez (ornitie)

Desarrollador de Software, con hambre de aprender, con gusto por escribir y con ansias de programar.