Para entender ambos acercamientos de la programación, vamos a ensuciarnos un poco las manos con uno de mis lenguajes favoritos (ActionScript). Supongamos que somos programadores de AS y que entendemos la sintaxis y la semántica del lenguaje y hasta cierto punto sabemos que estamos programando en línea de tiempo, por lo cual nuestro acercamiento a la programación, podríamos decir que ha sido estructurada.
Comenzaremos con una idea, un ejemplo práctico que demuestre pros y contras de cada acercamiento. La idea es generar un juego simple que va a mostrar una palabra desordenada (DESIGN), cada una de las letras, podremos arrastrarlas por el escenario y probar depositarlas en las casillas correspondientes. Cuando acertemos al depositar una letra en su casilla, esta última cambiará visualmente para mostrarnos que hemos acertado.
En un acercamiento estructurado, si pudiéramos dividir el tiempo de desarrollo aproximadamente el 30% haríamos análisis y el 70% programaríamos, cuando en un acercamiento Orientado a Objetos estas cifras se invertirían.
He aquí el archivo fuente del ejemplo con un acercamiento estructurado (no es 100% puro pero es una idea). En este acercamiento hay ciertos artificios en el código que por la naturaleza de la misma programación estructurada tuvieron que hacerse así.
Ahora veamos el fuente de un acercamiento OOP (tampoco es 100% puro). A primera vista podemos distinguir que el fuente del acercamiento estructurado es solo un archivo mientras que para el acercamiento OOP, existe un archivo externo llamado DragLetter.as, la magia de este acercamiento consiste en hacer una abstracción lo más cercana a la realidad de las letras, que puedo arrastrar, y plasmar el diseño y la implementación en este plano (clase).
De esta manera podemos ver la potencia de este último acercamiento con preguntas pensando en el futuro: ¿Y si aparte de poder arrastrar la letra quiero que esta se vuelva transparente? ¿Qué pasaría si esta misma funcionalidad la quiero utilizar en otra aplicación? ¿Y si quiero programar un sudoku? Son preguntas individuales que tomaran sentido cada vez que practiquemos la OOP.
Generalmente cuando sale un nuevo modelo de auto al mercado, no se diseña desde cero, ya hay la idea de un chasis, llantas motor, etc…Cuando sale un nuevo teléfono móvil sabemos que tendrá pantalla, teclado, etc… Y así podríamos pasarnos todo el día viendo ejemplos donde se retoma mucho del código ya hecho para enfocarse en mejorar lo existente.
De esto último concluyo con la reflexión: “Si adoptamos a la OOP como nuestro acercamiento al programar, no tendremos que preocuparnos por inventar el hilo negro a cada vez, mas bien tendremos que preocuparnos de los suéteres y bufandas que vamos a tejer con ese hilo…”