Programación Orientada a Objetos para R y Python ¿Por qué debieras saber sobre esto?

Nota: este texto está pensado para gente que ya tiene algo de conocimientos en Python o R a nivel general, si estos lenguajes aún son chino o peor para ti, vuelve más adelante, este post te estará esperando :)

¿Por qué aprender Programación Orientada a Objetos (POO)? Las respuestas son 2:

  1. Porque desarrollar la intuición es fácil, probablemente no necesites mucho más que este post (o eso espero)
  2. Porque es útil. Adquieres una suerte de "modelo mental" que necesitas para moverte en prácticamente cualquier lenguaje (en lo personal yo lo aprendí con Java, y me sirvió un montón hasta hoy), y que te permitirá entender que carajo está pasando (en parte). Tal vez no te hayas dado cuenta, pero cuando mueves datos con R o Python, literalmente estás haciendo POO.
Si esta imagen te representa, con mayor razón debieras leer este post

Partamos por la definición, como ven se compone de 3 elementos, Programación, Orientada y Objetos. Las primeras 2 palabras más o menos las entienden por intuición y uso común, pero el término "Objetos" no es el mismo que usamos los humanos(?) en nuestro diario vivir. En términos técnicos un "Objeto" es una instancia de una clase

Ok, pero ¿Qué es una instancia y qué es una clase? Partamos por la clase. Esta parte nos va a gustar ya que su definición es más cercana a como razonamos en ciencias sociales: Una clase una "abstracción" de la realidad o de algún componente de la realidad, que busca representarlo o modelar alguna de sus propiedades. 

Un ejemplo. Digamos que en la realidad existen cosas que llamamos gatos. Vemos que estos animales, tienen ciertos rasgos que los caracterizan: maúllan, tienen patas, nombre, te ignoran cuando los llamas, entre otras. Dado ello quieres poder modelar un gato en tu sistema para estudiarlos en más detalle. Eso en Python lo hacemos así.

 

Ojo, como mencionamos, la clase es una "abstracción" del gato, claramente en la realidad los gatos tiene muchas más propiedades y complejidades, pero con la clase podemos tener una caracterización o modelo manipulable de estos. Ahora si seguimos la definición de objeto (instancia de una clase), nos queda "instanciar". 

La instancia sería EL gato en concreto, diferenciable de los demás gatos, por ejemplo crearemos 2 objetos de la clase gato, o lo que es lo mismo, crearemos 2 instancias de gato.


Con esto, tenemos en teoría, 2 gatos, cada uno con sus elementos, a los que podemos acceder, así. 


Similar a otros lenguajes, la "llamada" o invocación de las propiedades de un objeto, es con un punto, en la lógica [objeto].[propiedad]. Y dado que tenemos el objeto, también podemos llamar sus funciones, que en el contexto de las clases también se conocen como "métodos". 

¿Aahh, entonces cuando uso librerías tipo import pandas as pd, técnicamente estoy usando un objeto y llamando sus métodos? SI.

"Ya pero yo uso R, que tiene que ver". PUES ES LO MISMO! Solo que en vez de usar el punto ".", en R la invocación es con un signo peso "$", en la lógica [objeto]$[propiedad] ¿ahora todo tiene sentido no? Por ejemplo aquí creamos un objeto de clase data frame con 2 propiedades o en este contexto, variables, e invocamos una de ellas.

Así también tenemos otros objetos más complejos en R como el "linear model", lm(), que como notan en la imagen posterior, tiene elementos o propiedades dentro de otras propiedades del mismo objeto, lo cual también es posible en Python, y en la POO en general.

Por último, este razonamiento orientado a objetos, te ayuda mucho a pensar en como armar una base de datos. Por ejemplo si quiero almacenar variables de una persona, la puedes pensar como una clase, y crear el data frame con ello en mente, pensando en las columnas como sus propiedades, y cada caso, dentro del data frame, como un objeto o instancia de la clase. Este razonamiento se usa mucho en la construcción de bases de datos relacionales, algo que es parte importante del mundo de la analítica, y de las que ya te hablaré en otra instancia. 

Atacar la estadística y los datos no es algo tan fácil cuando se es "humanista". Hay un millón de cosas que no sabes, y por cada nueva que aprendes, aparece otro millón más que ni sabías que desconocías. Pero juntando esos pocos al final algo acabas aprendiendo, espero haber contribuido a eso hoy, y lograrlo en las próximas entradas que haga.



Comments