A vueltas con la programación orientada a objetos

Comienzas a estudiar programación y te cuentan que debes coger un problema a solucionar y dividirlo en varios pasos, divide y vencerás esa es la premisa, y esos pasos los etiquetes con un nombre para acceder más fácilmente a ellos, a esa parte más pequeña se le llama función o procedimiento. El siguiente problema es ¿y donde guardo los datos con los que trabajo? la solución es utilizar pequeños contenedores ubicados en la RAM del ordenador llamados variables, los cuales a groso modo pueden guardar un número, una frase o un valor booleano (verdadero o falso), obviamente cada variable también se la etiqueta con un nombre para tener acceso a ella de manera más sencilla. A esas funciones le puedas dar también una variable para que opere con ella y guarde en esta el resultado de realizar las acciones que almacena. Eso es la programación estructurada.

Pero estoy haciendo una app para mecanizar mi colección de discos y necesito guardar información de ellos y si por cada disco tengo que crear una variable numérica para el año, dos del tipo frase para el nombre del disco y el nombre del grupo apaga y vámonos porque tengo 1000 discos (que fácil es obtener archivos mp3 de la red hoy en día…)… en ese momento entra en escena la customización de variables, el famosisimo tipo «struct«, un tipo de variable que se basa en la combinación de tipos más pequeños, de ese modo creo mi tipo struct llamado TDisco el cual formo con la variable del tipo número año, la variable de tipo frase grupo y la variable de tipo título, esto unido a mi colección de procedimientos (o como se define formalmente librerías) para guardar un TDisco en el listado de discos, buscar un TDisco en mi listado, etc me resuelven el problema que tenia al principio: TENER MI COLECCIÓN DE DISCOS ORDENADA.

¿Y ahora que? ya se programar ¿no? ¿cual es el next level? pues el next level amigo@ mi@ es poesía, es esa parte de la informática que te dará la oportunidad de ser creativo cuando la domines, porque no es fácil dominarla.

Te dirán que hay una cosa llamada «clase» que debes «instanciar«… pero tu solo verás que «esa» clase no es más que un struct al que se le han vinculado procedimientos, ahora llamados «métodos«, y que instanciar es almacenar en memoria un variable de ese tipo… nada nuevo sobre el horizonte. Pero pasarán los años, programarás con lenguajes orientados a objetos porque ya nadie programa a la vieja usanza y poco a poco asimilarás los conceptos, te darás cuenta que lo que defines como clase es mucho más que unas cuantas variables y procedimientos, es el ADN de una entidad que será única cuando se cree en memoria, la cual durante su vida pasará por diversos estados y reaccionará según su programación ante estímulos exteriores.

Ahora cuando reprogramas tu vieja app según la P.O.O. puedes preguntar directamente a un disco de que año es ejecutando su método «dameElAñoDeGrabacion«, puedes llamar al método «guardaDisco» del objeto estantería pasandole un objeto disco junto a la llamada, tan cercano a la forma en la que interactuamos nosotros con el mundo que nos rodea. Dejas de ver variables en memoria almacenadas y comienzas a ver entidades que se relacionan las unas con las otras, divides un problema, no en pasos, sino en elementos con distintas reglas de interacción con el resto. Ocultas la parte de tu programación que no necesitan conocer los que trabajen en un futuro con tus clases dejando a la vista solo la interfaz de usuario, del mismo modo que un coche tiene un volante y solo necesitas saber que girándolo el coche cambia de dirección sin necesitar conocer que elementos intervienen en el movimiento del eje de las ruedas.

En ese momento el desarrollador pasa a ser una persona creativa, pasa a visualizar la solución de un problema como la suma de elementos que trabajarán al unísono para solucionarlo.

Primeros pasos con Apache Cordova – 1

Esta entrada no pretende repasar la historia de Apache Cordova o PhoneGap, tampoco será un tutorial como tal, simplemente intentaré elaborar una serie de pasos para que una persona que no tiene ni idea de HTML, Javascript, programación en cross-plataform, etc más o menos se guíe o por lo menos sepa por donde comenzar a buscar información. Además, pretende ser una manera para que refresque un poquito lo que es el HTML y Javascript ya que hace unos años que no toco nada y estoy un poco oxidado, en mi defensa dire que conozco el SDK de Android pero el hecho de que cada plataforma quiera su SDK hace que si quieres elaborar aplicaciones para dispositivos móviles en general (android, iphone o windows phone) tengas que buscar soluciones cross-plataform que a grandes rasgos no es más que un framework que traduce lo que programas en el SDK de destino de turno.

¿Y por que me he decidido por Apache Cordova?, pues primero porque está bajo la protección de Apache y segundo porque de lo poco que he visto el código nativo generado es bastante rápido… y tercero porque voy a comenzar la programación de una aplicación para gestión de proyectos orientada a dispositivos móviles.

En primero lugar, Apache Cordova no necesita de IDE de desarrollo, puedes bajarte el SDK y programar con el notepad pero existen plugins para hacer que funcione con Eclipse, Visual Studio, bla bla… yo me decanto por Visual Studio porque estoy familiarizado con el y porque la instalación de Apache Cordova se hace con una par de clics, además se encarga de instalar todas las dependencias que se necesitan como Node.JS y demás, vamos, que te centras en lo que importa: programar. Para ello lo primero es descargar Visual Studio, puedes hacerlo desde este enlace, descargamos la versión free y cuando nos de la opción de escoger paquetes seleccionamos el paquete Cross Plataform Mobile Development tal como puedes ver en la imagen.

 

vs1

 

Una vez terminada la instalación y en el primer arranque Visual Studio nos pedirá que nos registremos bla bla… una vez hecho eso podemos crear nuestro primer proyecto haciendo clic en Archivo -> Nuevo -> Proyecto, esto nos abrirá una ventana para seleccionar la plantilla del tipo de proyecto que queremos crear, en nuestro caso buscaremos Apache Cordova Apps y le pondremos un nombre al proyecto, opcionalmente buscaremos otro directorio.

 

vs2

 

Esto nos genera la estructura de ficheros y directorios básica que debe tener el proyecto, la cual no es nada distinta a la que nos generaría el SDK si lo ejecutáramos a pelo.

 

vs3

 

Cabe destacar que con lo que se ha realizado no se han generado todos los archivos necesarios, faltan dependencias o plugins, pero para que estos se añadan solo debemos compilar el proyecto, si nos fijamos en la salida del compilador se puede apreciar como se descargan… con el SDK a pelo pasaría lo mismo.

Como se puede apreciar la puesta en marcha con Visual Studio es muy sencilla… para tontos diría yo. Hasta aquí de momento, en próximos episodios explicaré como solucionar el error que tiene la plantilla a la hora de generar ventanas y como crear una desde cero.