Comenzando con programas

En su forma más básica, un programa toma algún dato de entrada, lo procesa y luego produce un resultado. Nuestro programa de conversión de un elevador muestra una manera muy corta, pero completa, de llevar a cabo estos tres pasos.

Si pensamos un poco más sobre este programa, existe un “mundo exterior” y el programa. Es con los datos de entrada y de salida que el programa interactúa con el mundo exterior. Dentro del programa utilizamos tanto el código como los datos para cumplir la tarea que el programa está diseñado para resolver.

Una forma de pensar en la programación orientada a objetos (OOP) es que separa nuestro programa en varias “zonas”. Cada zona contiene algo de código y datos (como un programa) y tiene interacciones bien definidas tanto con el mundo exterior como con las otras zonas del programa.

Si miramos la aplicación de extracción de enlaces en la que usamos la librería BeautifulSoup, podemos ver un programa que fue construido conectando distintos objetos para cumplir una tarea:

Un programa

Convertimos la URL en una cadena y luego pasamos a ésta por urllib para recuperar los datos de la web. La librería urllib utiliza la librería socket para llevar a cabo la conexión que recupera los datos. Tomamos la cadena que retorna urllib y se la entregamos a BeautifulSoup para su análisis. BeautifulSoup utiliza el objeto html.parser1 y retorna un objeto. Luego, llamamos al método tags() en el objeto retornado, lo que retorna un diccionario de etiquetas. Nos desplazamos por las etiquetas y llamamos el método get() por cada etiqueta para imprimir el atributo href.

Podemos hacer un diagrama de este programa y cómo los objetos funcionan en conjunto.

Un programa con una red de objetos
Programación orientada a objetos

Lo importante ahora no es entender perfectamente como funciona este programa, sino que ver cómo construimos una red de objetos que interactúen entre sí y orquestamos el movimiento de información entre esos objetos para crear un programa. También es importante notar que, cuando viste el programa hace varios capítulos, pudiste entender perfectamente cómo funcionaba sin siquiera percatarte de que estaba “orquestando el movimiento de datos entre objetos”. Eran solo líneas de código que cumplían una tarea.