programacion – Digital Learning Formación online en Nuevas Tecnologías Wed, 05 Jul 2017 08:39:28 +0000 es-ES hourly 1 https://wordpress.org/?v=4.7.5 Curso demo Programación Apps con Android Studio /blog/curso-demo-programacion-apps-con-android-studio/ Wed, 01 Feb 2017 12:05:56 +0000 /?p=13897 Curso Android Studio demoEn un anterior post ya os presentamos la nueva versión del curso Desarrollo de Aplicaciones Android basado en el entorno de desarrollo oficial Android Studio.

Hoy queríamos anunciaros el curso demo gratuito  que hemos creado a partir de él. A veces es complicado evaluar si una formación se va a ajustar a nuestras necesidades, así que esta versión de prueba os puede ayudar a comprobarlo.

En ella podréis ver la estructura general del curso, los temas que trata y los recursos que contiene: contenidos (web, pdf, videos), tests y ejercicios.
Tenéis acceso completo al Módulo 0 y al Tema 1 (con descarga del pdf) y a una muestra del resto, incluyendo los enunciados de todos los ejercicios.
También están abiertos los foros por si queréis consultarnos sobre el curso y que atenderemos tanto el Tutor como los administradores de la plataforma.

Además el acceso es sencillo ya que podéis daros de alta un usuario (solo es necesario vuestro nombre y correo electrónico) y automatricularos vosotros mismos en menos de un minuto. Esta inscripción tiene una duración de 15 días, es gratuita y sin ningún compromiso. Si os gusta, podéis matricularos en el curso completo en el momento que queráis.

¡ Esperamos que os animéis a probarlo si estáis interesados en aprender a programar para Android !

]]>
Curso Programación Apps: nueva versión con Android Studio /blog/curso-programacion-apps-nueva-version-con-android-studio/ Sat, 01 Oct 2016 17:52:20 +0000 /?p=13637 Tras varios meses de trabajo, nos alegra anunciar que hemos lanzado de nuevo nuestro curso de Desarrollo de Aplicaciones Android.

Hemos reelaborado sus contenidos, tests y ejercicios, basándolos en el nuevo entorno de desarrollo oficial Android Studio, tras la retirada del soporte de Google al anterior IDE Eclipse.

El objetivo es el mismo: aprender a desarrollar y publicar nuestras primeras Apps Android, con algunas novedades como la gestión de tareas en segundo plano, o la reproducción de ficheros multimedia.

También hemos incluido en cada módulo proyectos de ejemplo (descargables) con un video explicativo. Son aplicaciones muy simples, para aprender de forma práctica, como este ejemplo donde implementamos una base de datos SQLite para gestionar datos y que hemos utilizado para presentar el curso.

Para complementar esta formación, regalamos a los alumnos un acceso premium gratuito a Academia Android, donde pueden ampliar y profundizar en diversos aspectos de la programación Android.

Y para los alumnos que cuentan con muy poca experiencia en Java y POO ofrecemos un Pack formativo a un precio muy especial que incluye este curso y el de Java para Android y POO.

Por supuesto, en ambos cursos, cuentas con la ayuda personalizada de un Tutor con amplia experiencia en estos entornos. Te atenderán cualquier duda que plantees, por básica que sea, para que puedas avanzar sin problemas en tu formación.

¿Te animas a aprender programación Android con nosotros?

 

]]>
Campus Tecnológico UGR Para Chicas /blog/campus-tecnologico-ugr-para-chicas/ Wed, 29 Jun 2016 17:58:57 +0000 /?p=13498 cartel-campus-tecnologico-chicasEl Campus Tecnológico UGR Para Chicas es una iniciativa muy interesante que queremos ayudar a difundir (y a la que nos unimos como uno de los patrocinadores). Lo convoca la Universidad de Granada, ya en su 3ª edición, y se desarrollará del 4 al 15 de Julio.

Como describen en su página web, consiste en un campus gratuito presencial, en el que un grupo de estudiantes de entre 14 y 18 años desarrollarán proyectos tecnológicos sobre videojuegos, apps y robots.

El objetivo es tratar de promover entre chicas estudiantes de ESO, bachillerato y ciclos formativos, la vocación por la tecnología y motivarlas a realizar una carrera científico-técnica, adquiriendo conciencia del potencial femenino en el área de la informática.

Aplaudimos este tipo de proyectos que nos parecen muy necesarios para compensar el déficit de alumnas en las carreras de ingeniería, y en concreto en la de informática, ya que su aportación en estos campos es muy necesaria.

Esperamos que disfruten de la experiencia de este Campus donde se combina el aprendizaje, la colaboración en grupo y la diversión.

]]>
Nuevo curso “Aprender a programar” /blog/nuevo-curso-aprender-a-programar/ Fri, 06 May 2016 11:38:15 +0000 /?p=12754 Muchos usuarios que están habituados a utilizar aplicaciones informáticas, piensan que la programación no es para ellos. ‘Eso’ es otro nivel,  para técnicos y especialistas, se dicen, y no solo me va ser difícil aprender a programar, sino que además ¿para qué me serviría?

Se asume que la programación es “blanco o negro” (o voy a ser programador profesional o no merece la pena saber nada sobre ésto), pero la realidad es que es una escala continua de grises (¡o mejor de colores!), como ocurre en otras muchas disciplinas.

Por supuesto, hay software, que por sus características o complejidad, exige desarrolladores con sólidos conocimientos y experiencia, pero lo bueno de la programación es que se pueden plantear un gran rango de objetivos a diferentes niveles.

Aprender a programar puede ser muy útil y divertido y desde que empezamos, hay gran variedad de proyectos a nuestro alcance que nos pueden motivar. Se ha escrito mucho sobre qué nos puede aportar la programación: creatividad, autonomía, capacidad de análisis y resolución de problemas, colaborar y compartir con otros, dejar de ser meros consumidores y entender mejor la tecnología,… pero ¿qué tal si lo descubres tú mismo?

Nuevo curso “Aprender a programar (con JavaScript)”…

Poster curso Aprender a Programar con JavaScriptEn Digital Learning siempre hemos creído en esa filosofía y ofrecemos cursos de introducción, además de especialización, en diversos lenguajes
de programación. Desde hace tiempo queríamos complementar esta formación, con una que se dirigiera a los usuarios que quieren empezar totalmente desde cero en el campo de la programación.

Aunque para ayudar a dar estos primeros pasos hay muchos recursos en la Web, quisimos elaborar una formación que cubriera las características que teníamos en mente y que describimos en su página de información: “Aprende a programar (con JavaScript)“.

…y nueva línea de formación “Aprende a….”

Este proyecto lo quisimos plantear en un nuevo formato. Los recursos no se encuentran en nuestra plataforma de teleformación Moodle, sino publicados en nuestra web. Esto nos facilita dejar el acceso libre a una parte de los contenidos sin necesidad de registrarse, para que cualquier visitante pueda comprobar si se ajusta a sus necesidades.

También varía un poco la forma de inscripción y de realizarlos. Puedes automatricularte, dándote de alta en ese mismo instante, eligiendo entre dos tipos de suscripciones (“Autoformación” y “Premium“), a un precio muy económico, durante el tiempo que quieras.

Tenemos ya previsto lanzar en pocas semanas  ¡Ya disponible! un nuevo curso en este mismo línea: “Aprende a crear Sitios Web con WordPress” y posteriormente otro sobre los lenguajes  HTML y CSS.

Imagen curso Aprende a crear sitios web con WordPress

Esperamos que os guste este formato y por supuesto hacernos llegar vuestras sugerencias sobre otros temas que queráis que tratemos.

 

]]>
Nuevo curso ORM GreenDAO para Android /blog/nuevo-curso-orm-greendao-para-android/ Mon, 09 Mar 2015 17:36:51 +0000 /?p=9113 Presentamos el nuevo curso online del ORM GreenDAO para Android, una formación práctica con Tutor, dirigida a los desarrolladores que quieren profundizar en el uso de base de datos en sus Aplicaciones, disponible a través de nuestro proyecto Academia Android.

Cartel curso ORM GreenDAOEn él conocerás el modelo Object-Relational Mapping (ORM) que facilita la programación para gestionar y acceder a los datos de una bbdd relacional. El ORM que hemos elegido para el curso  ha sido GreenDAO. Es un software de código abierto, gratuito y con un gran rendimiento lo que le hace ser uno de los más utilizados en Android.

El uso de SQLite en Android permite desarrollar potentes aplicaciones con una mejor gestión de sus datos. El ORM es un complemento a SQLite, ya que nos permite trabajar con las clases de GreenDAO, en vez de con tablas y lenguaje SQL, agilizando el desarrollo y evitando el código repetitivo que hay que escribir, generando los objetos de negocio cada vez que se recuperan los datos. Del mismo modo, nos permite guardar los datos modificados de forma muy simple y optimiza el acceso a los mismos, facilitando esa tarea y mejorando la seguridad.

Aprovecha la promoción de lanzamiento y comienza ya a aprender con nosotros!
]]>
Nuevo curso Programación de Juegos para Android (con libGDX) /blog/nuevo-curso-programacion-de-juegos-para-android-libgdx/ Thu, 27 Nov 2014 20:37:03 +0000 /?p=8929 Seguimos elaborando nuevos cursos a través de Academia Android. Hoy hemos presentado el curso online Programación de Juegos para Android (con libGDX).

El mundo del videojuego para dispositivos Android es una oportunidad extraordinaria para empresas y desarrolladores, pero es imprescindible utilizar frameworks especializados que faciliten la labor de creación de juegos de calidad.

Hemos comenzado con el frameworks open source libGDX, uno de los más populares, y en los próximos meses completaremos esta oferta formativa con otros dos frameworks muy representativos: Unity y Cocos2D.

Si quieres saber más, puedes leer el post sobre estos cursos de programación de juegos que hemos publicado en la web de Academia Android.

¿Te animas a aprender con nosotros?

 

 

]]>
10 Rankings de lenguajes de programación /blog/rankings-de-lenguajes-de-programacion/ /blog/rankings-de-lenguajes-de-programacion/#comments Sun, 27 Jul 2014 12:55:41 +0000 /?p=8785 Los rankings de los lenguajes de programación más populares y utilizados es un tema un poco controvertido. Los métodos que se utilizan para establecer esas clasificaciones difieren de un índice a otro y siempre se pueden hacer objeciones sobre los parámetros de cálculo que utilizan.

No pretendemos en este artículo determinar cuál es el índice más ‘fiable’, si no confeccionar una lista formada por 10 rankings que hemos seleccionado por su popularidad o por tener características que hemos considerado interesantes. En conjunto, nos pueden dar una visión más objetiva y completa que analizando solo uno de ellos.

Nota: hemos actualizado algunos enlaces y datos de este artículo (enero 2017), pero hemos mantenido los mismos rankings y redacción del original. Publicaremos un nuevo artículo si podemos revisarlo más a fondo.

Por regla general, estos rankings o índices se realizan a partir de información disponible en la Web y se basan en algunos de estos parámetros:

  • Análisis de consultas que se realizan en los motores de búsqueda más utilizados
  • Actividad en comunidades de programadores (proyectos, discusiones…)
  • Demanda de conocimientos/experiencia de programación en el mercado de trabajo
  • Volumen de libros vendidos (datos de editoriales especializadas)
  • Encuestas realizadas en Internet entre programadores

Comenzamos la lista, indicando que no está ordenada por calidad o popularidad de estos índices, si no más bien, por los métodos de cálculo que emplean:
Nota: en aquellos lenguajes de los que ofrecemos cursos, hemos incluído un link a su página de información

 

1. Tiobe

Quizás el más conocido. Lo elabora la empresa Tiobe, especializada en evaluación de calidad de programas software.

Según indican en su propia página establece la popularidad de los lenguajes en función del número de resultados que se producen en los 25 buscadores más utilizados (según Alexa) con la consulta: +”<language> programming” (por ejemplo +”Javascript programming”) . Todo ello con una serie de premisas que puedes leer en su web

Este índice se publica cada mes, y en la imagen puedes ver la evolución del índice hasta 2016, de los distintos lenguajes a lo largo de los últimos años.

Ranking lenguajes programación TIOBE 2016

Evolución índice Tiobe hasta diciembre 2016

Como comentábamos, hay detractores o personas que al menos ponen objeciones serias al método de cálculo. Encontrarás ejemplos en la web que describen alteraciones de los resultados (aunque sean temporales) por acciones concertadas de comunidades de programadores, robots  o artículos donde se argumenta contra el posicionamiento de determinados lenguajes (ver un par de ejemplos en las referencias al final de este post), lo que nos lleva al siguiente índice que trata de corregir eso.

 

2. PYPL PopularitY of Programming Language index

El PYPL o Indice de Popularidad de los Lenguajes de Programación, se elabora analizando el número de búsquedas en Google de tutoriales sobre un determinado lenguaje. Obtiene los datos de Google Trends, por lo que argumentan que es mucho más transparente en su cálculo ya que cualquiera podría elaborarlo para su país o lengua, por ejemplo. También es cierto, que el análisis, al ser exclusivo en un solo buscador, aunque sea el líder, puede ser más limitado.

 

Diagrama con ranking lengaujes según PyPl

Diagrama de PyPL con licencia Creative Commons Attribution 3.0 Unported License

Con este método de analizar consultas sobre tutoriales, se trata de establecer un término de búsqueda consistente e igual para todos los lenguajes, con probabilidades parecidas de utilización en todos ellos, y que suelen dar pocos falsos positivos (es decir, resultados que no tienen que ver con lo que queríamos buscar).

También reseñar que no son consultas totales, sino que se calculan proporciones. Es decir, del total de búsquedas sobre tutoriales de esos lenguajes, calculan el porcentaje que representa cada uno. Por eso, aunque haya menos consultas sobre tutoriales Java a lo largo del tiempo, si en el resto también caen, el % puede mantenerse estable.

De esta manera se evitan fallos cómo:

  • Analizar la búsqueda por el nombre solo del lenguaje, ya que algunos pueden tener varios significados y dar muchos falsos positivos, como por ejemplo ‘Python’ ó  ‘Java’.
  • La objeción sobre el uso del cualificador ‘programming’, porque consideran que es más probable utilizarlo en lenguajes como ‘C’, que en otros como PHP ó Javascript, por tener nombres que los identifican de manera inequívoca
  • Por último, indicar que al analizar las búsquedas por ‘tutorial’ se está teniendo en cuenta también las búsquedas en español  al ser igual el término en nuestro idioma y en inglés (hasta donde sabemos ha sido una casualidad).

 

3. The Transparent Languaje Popularity Index

El Índice Transparente de Popularidad de Lenguajes es una herramienta open-source que puedes descargar en sourceforge y que establece su clasificación de manera automática.

Actualización: este es un índice que ya no se actualiza tal como explican en su página. En cualquier caso es interesante conocer su filosofía y datos publicados.

Realiza sus consultas (la misma que en Tiobe: +”<language> programming”) en  buscadores y sitios destacados (Google, Bing, Yahoo, Youtube, Amazon, Wikipedia) y los publica directamente en tablas, sin ningún filtro.

Se puede pinchar en cada celda para verificar el query realizado y los resultados obtenidos

 

Clasificacion Transparent Index Languajes Programming

Extracto de los 10 primeros lenguajes ‘clasificados’ en el Transparent Index Language Popularity Index (Julio de 2013)

 

4. Redmonk

El ranking de Redmonk  se basa en la actividad que se detecta en dos comunidades muy populares entre los programadores:

  • número de proyectos en el repositorio de GitHub
  • número de preguntas en la web de StackOverflow

Como reconocen los propios creadores de este ranking, aunque ambos sitios presentan una correlación alta, puede haber lenguajes que estén minusvalorados en estas comunidades. Por ejemplo hay lenguajes que no suelen emplearse en proyectos Open Source o personales, algo característico de GitHub, o sean más proclives a utilizar otros repositorios como SourceForge.
Igual puede ocurrir en cuanto a búsqueda de ayuda donde StackOverflow no sea el sitio de referencia para determinados lenguajes.

En cualquier caso, es interesante como método de cálculo distinto al de las consultas realizadas en los buscadores.

 

Redmonk ranking lenguajes programación

Ranking Redmonk en enero 2014 para popularidad e lenguajes de programación

 

5. Trendyskills

Trendyskills se basa en las ofertas de empleo que se registran para los diferentes lenguajes de programación. Es más una herramienta interactiva que un índice, donde podemos realizar nuestras propias consultas, y ver las tendencias en el mercado laboral de diversos paises (USA, UK, Alemania, España, Suecia y Grecia) lo que es una aproximación diferente y complementaria a los rankings que hemos visto anteriormente.

Ranking TrenSills de lenguajes de programación

Gráfico de Trendy Skills con lenguajes de programación más populares por ofertas de trabajo. Podemos modificarlo dinámicamente realizando otras consultas

 

6. Job trends (Indeed.com)

En esta misma línea de analizar de forma dinámica los conocimientos que se solicitan en las ofertas de empleo, hay otros, como la utilidad ‘Job Trend‘ (tendencias de empleo) del buscador especializado en ofertas de trabajo Indeed.com

Entre otras diferencias, nos da por ejemplo datos de lenguajes o sistemas que no son exactamente lenguajes de programación pero en los que podemos estar interesados (por ejemplo HTML y CSS ó AJAX). En la imagen hemos capturado una búsqueda por Android, que no es un lenguaje en sí, y que en otros índices o rankings puede estar incluído en los resultados de Java.

Ofertas de empleo relacionadas con Android

Tendencia en ofertas de empleo donde se solicitan skills relacionados con Android (http://www.indeed.com/jobtrends/Android.html)

 

7. Langpop (programming Languaje popularity)

La web Langpop nos ha llamado la atención, ya que se establecen rankings por diversos parámetros. Luego combina todos ellos y mediante una interfaz interactiva, podemos darles distintos pesos a cada criterio según nos interese, para que recalcule las posiciones. Está actualizado con datos hasta 2013.

Actualización: parece que la web langpop.com dejó de funcionar, aunque se puede consultar aquí.

Los parámetros que maneja son:

  • Consultas en Google (del tipo “language programming”)
  • Número de ficheros con una determinada extensión (prima excesivamente los lenguajes de la Web)
  • Ofertas de empleo (publicadas en Craiglist)
  • Número de proyectos de desarrollo (GitHub y Ohloh/OpenHub)
  • Discusiones sobre lenguajes (Lamda the Ultimate, programing.reddit.com, Slashdot)

Ranking dinámico de lenguajes programación Langpop

Langpop.com: ranking dinámico de lenguajes de programación. Puedes configuralo dando diferentes pesos a cada factor que tiene en cuenta.

 

8. IEEE Spectrum’s Ranking

En la línea del anterior, pero más potente, otro ranking con una gran interfaz gráfica interactiva que nos permite obtener distintas clasificaciones en función de los distintos parámetros que utiliza para el cálculo de las clasificaciones:

  • General (lo que denomina IEEE Spectrum)
  • Tendencia (Trending)
  • Ofertas empleo (Jobs)
  • Personalizado (Custom: nos permite hacernos un ranking a medida eligiendo el peso de cada parámetro)
  • Web / Móvil / Empresa / Embebido (podemos filtrar por cualuqiera de estos entornos)

 

Ranking IEEE Spectrum

Interfaz gráfica del ranking IEEE Spectrum. Podemos elegir diversas categorías, hacer comparaciones o elaborar uno personalizado

La verdad es que es una de las herramientas que más nos ha gustado de todas las que presentamos, por el diseño que tiene y la filosofía con la que está construida, que nos da muchas posibilidades de personalización como mostramos en la siguiente imagen:

 

Personalización ranking IEEE

Podemos personalizar los rankings ponderando nosotros mismos los paramétros de cálculo

 

9. Ranking venta de libros (O’Reilly)

Traemos este ejemplo de índice de popularidad basado en volumen de venta de libros. Hemos escogido a O’Reilly, por ser una conocida editorial especializada en TIC y que publica cada cierto tiempo algún análisis sobre la venta de sus libros:

 

Análisis venta de libros sobre lenguajes de programación (O'Reilly) programación de O'Reilly

Análisis venta de libros sobre lenguajes de programación (O’Reilly)

 

10. Twitter programming languaje survey

Por último, terminamos esta lista con otro método de clasificación, en este caso una encuesta realizada en Twitter a lo largo de 2013 denominada #Code2013.

Nota: puedes ver la última actualización al año 2015 aquí: #Code2015

El volumen de datos no es comparable a las consultas automáticas, pero como muestra puede ser interesante. Para hacernos una idea, Javascript, el lenguaje más mencionado, obtuvo 2.769 menciones.

Además, esta encuesta introduce el sesgo que puede haber en la utilización de Twitter, ya que este uso puede no ser uniforme entre los distintos perfiles de programadores.

En cualquier caso es interesante porque son contestaciones reales a a la pregunta del lenguaje que se utiliza y las ‘respuestas’ pueden comprobarse pinchando en cada hashtag, viendo los usuarios y tuits donde se ha mencionado.

 

Ranking #Code2013

Diagrama popularidad lenguajes según encuesta en Twitter (#Code2013). Datos de enero 2014

 

Conclusión

Esta lista te puede dar una buena idea del panorama de rankings y herramientas para conocer la popularidad de los lenguajes de programación, aunque lógicamente hay más. Como verás, hay discrepancias, pero también puntos en común entre muchas de ellas, a pesar de emplear métodos diferentes.

En resumen, puede ser una información orientativa muy interesante, útil, e incluso ‘divertida’ de analizar, pero de la que tampoco debemos esperar una precisión y fiabilidad absolutas.

Ahora es tu turno: ¿Conoces algún ranking que no hayamos presentado aquí? ¿Alguna herramienta que consideren otros idiomas además del  inglés? ¿Ves útil alguno en especial? ¿Utilizarías alguno de estos rankings para decidir que lenguaje aprender o te basas en otros criterios? Esperamos tus comentarios!

 


Referencias: algunos artículos y enlaces relacionados:

]]>
/blog/rankings-de-lenguajes-de-programacion/feed/ 11
Aprende Java y POO: primera novedad para 2014 /blog/aprende-java-poo-primera-novedad-2014/ Tue, 31 Dec 2013 12:48:02 +0000 /?p=8151 Queríamos empezar el año con un nuevo proyecto formativo que nos han solicitando con frecuencia: un curso para conocer los fundamentos de Java y la Programación Orientada a Objetos (POO) que además sirviera de base para iniciarse en el desarrollo de aplicaciones para Android.

Bueno, pues ya estamos con los últimos preparativos del curso online  “Java básico para Android” para que lo tengáis disponible a partir del 15 de Enero de 2014 y celebrar de esta forma la entrada del nuevo año.

 

¿A quién va orientado este curso?

El curso lo hemos diseñado con tres objetivos en mente:

  • Para aquellos que quieren iniciarse en la programación de Apps para Android. Como muchos sabréis, Android es el sistema operativo líder para smartphones y tablets (es una versión de Linux) y Java el lenguaje utilizado para crear apps en su entorno de desarrollo. Ahora bien, aunque Android utiliza la sintáxis y la semántica de Java, no incorpora su totalidad de bibliotecas de clases y APIs, por lo que hemos seleccionado solo lo necesario para que podáis empezar en ese entorno de desarrollo sin problemas.
  • Como introducción a Java. Podrás dar tus primeros pasos en este lenguaje, y a la vez que empiezas a conocerlo también aprendarás técnicas fundamentales de programación.
  • Como introducción a la programación orientada a objetos (POO). Este modelo es el más utilizado en la programación moderna, por lo que estos conocimientos son válidos para otros muchos lenguajes que lo implementan.

Es decir, que aunque no estés interesado en Android, aún así esta formación puede serte muy útil para iniciarte en el mundo de la programación.

¿Quién es el Tutor del curso?

Para este curso hemos contado con la colaboración de un experimentado formador y desarrollador: Jose Antonio Vacas , con un amplio bagaje en la enseñanza de Java y Android, así como otros lenguajes y sistemas. Jose Antonio te ayudará de forma personalizada, resolviéndote las dudas que puedas tener en los contenidos, y sobre todo en los ejercicios y programas que irás desarrollando a lo largo del curso.

Más detalles sobre el curso

Esta formación se imparte en nuestra modalidad de ‘matrícula siempre abierta’. Puedes consultar la ficha completa del curso Java, donde te damos una  descripción detallada del mismo, sus objetivos, la metodología, los contenidos que lo componen y las características principales de esta formación.

Promoción Pack “Java+Android”

Puedes matricularte en el Pack, compuesto por los cursos “Java básico para Android” y “Desarrollo de Aplicaciones para Android“, con un descuento especial

 

]]>
Apps Android: Proyectos de Alumnos /blog/apps-android-proyectos-alumnos/ Tue, 06 Nov 2012 13:30:19 +0000 /?p=6273 Tras lanzar nuestro Curso online de Desarrollo de Aplicaciones para Android en el primer trimestre del año, ya tenemos un buen número de alumnos que han completado con éxito esta formación.

Además de los ejercicios que se realizan en el curso, los alumnos desarrollan una App Android como Proyecto final, así que os queríamos presentar en este post algunas de las que ya han creado.

Los alumnos eligen la temática y diseñan su aplicación, contando si la necesitan, con la ayuda del tutor (Juan Luis Montero es el tutor principal del equipo de Iliberi, con los que colaboramos en esta formación). Él les resuelve dudas, propone soluciones a aquellas funcionalidades que ‘se resisten’ y aconseja sobre posibles mejoras para que la App sea lo más intuitiva y funcional posible.

Hemos seleccionado tres ejemplos de apps que os queríamos mostrar brevemente:

  • Miguel López Sarabia (Madrid):
    Ha diseñado una App que permitirá al usuario saber el número de plazas de parking disponibles en tiempo real en los distintos centros de trabajo de su Empresa y recibir alertas según ocupación. Con este widget, el usuario puede seleccionar el parking del edificio del que desea obtener información, los sonidos de alerta, los skins para su apariencia y una firma personalizada. El número de plazas libres se presenta en distintos colores según el nivel de ocupación (las capturas son del prototipo, con datos y algunos botones de test)
Pantalla configuración Widget Park - aviso sin plazas libres Widget Park - ocupación baja Widget Park - aviso ocupación media

Pincha en las imágenes para ampliarlas

  • Javier Infante Izquierdo (Irún-Gipuzkoa):
    Ha creado una App para ayudarnos a gestionar nuestra cotidiana lista de la compra y que nos permite crear y borrar listas, ver historial de compras o consultar un mapa con la ubicación de supermercados según nuestra posición captada por el GPS del smartphone.
  • Miguel Angel Quintas Aranda (Granada):
    Ha creado una App para la gestión de una guardería y facilitar a los padres el seguimiento de sus hijos: clases en la que están, calendario de actividades, comunicar incidencias o incluos poder verlos en el móvil mediante una webcam.

Lógicamente, este es un primer paso en la creación de Apps para Android que facilita a los alumnos seguir avanzando y adquirir más conocimientos y experencia en este entorno. Están surgiendo oportunidades muy interesantes en el mundo de los dispositivos móviles, y ellos han dado ya ese primer paso.
¿Te animas tú?

]]>
Clases y Objetos. Java y POO con Greenfoot /blog/clases-objetos-java-poo-greenfoot/ /blog/clases-objetos-java-poo-greenfoot/#comments Wed, 25 Jul 2012 12:00:43 +0000 /?p=5877 Tras ver en el anterior post la instalación del entorno de programación visual Greenfoot, vamos a empezar a trabajar con él. Crearemos un juego muy simple que nos servirá a su vez para familiarizarnos con los conceptos de clases y objetos,  que son básicos en de la Programación Orientada a Objetos (POO) y por supuesto en Java.

En primer lugar vemos que al abrir un escenario, por ejemplo el ‘Wombat’, y tras dar al botón de compilar en la parte inferior derecha no aparecen la siguiente pantalla, que será nuestra interfaz visual donde editaremos y ejecutaremos nuestros programas:

Interfaz de Greenfoot

Se divide en tres partes principales:

  • El Mundo, que es el cuadrado con retícula de color arena que nos aparece en la izquierda. Es donde pondremos los objetos y donde se desarrollará el juego o simulación que programemos. Variará su apariencia en función del escenario que carguemos, ya que cada uno tiene un Mundo por defecto (en este caso es ‘WombatWorld“) y éste a su vez tiene una imagen de fondo que podemos cambiar fácilmente como veremos más adelante.
  • El Diagrama de Clases, en la parte derecha. Ahí nos aparecen tanto las clases de Mundo que tenemos disponibles y las clases de Actores (‘Wombat‘ y ‘Leaf’) a partir de las cuales crearemos los objetos que incluiremos en el mundo elegido.
  • Los botones que aparecen en la parte inferior y que nos permiten ejecutar una serie de acciones que veremos a continuación.

Clase: menú contextualSi posicionamos el puntero del ratón en la clase Wombat y pulsamos el botón derecho para que apareca el menú contextual, obtendremos lo que aparece en la imagen de la derecha.

Si elegimos la opición ‘new Wombat()‘ estaremos creando un objeto a partir de esa clase, apareciéndonos una imagen de este animal que podremos arrastrar y posicionar en el mundo que tenemos a la izquierda (imagen de abajo).

Creando un objeto a partir de una clase Podemos crear tantos objetos como queramos a partir de la clase Wombat, y podemos hacer lo mismo con la clase Leaf (hoja), posicionando todos esos objetos en el cuadrado de la izquierda.

A la acción de crear objetos se le denomina instanciar (un objeto es una instancia de una clase). A partir de ahí, ya podemos interactuar con ellos.

Una clase es una especie de plantilla o molde a partir de la cual podemos crear objetos.

Para desarrollar un programa en Java, o utilizando en general el enfoque POO, descomponemos el sistema que estamos estudiando en ‘cosas’ (objetos), ya sean tangibles, físicas, cómo es el caso de los wombats y las hojas, o conceptuales, representando una idea, como sería el mundo de nuestro escenario. Estos objetos (con)tendrán datos  y comportamiento, como veremos un poco más adelante.

Un programa en Java se compone por tanto de un conjunto de clases que modelan ese sistema que queremos implementar. Todo el código del programa está contenido en esas clases.

En este paradigma de la POO, los sistemas se conciben como un conjunto de objetos que cooperan e interaccionan entre sí. Es una filosofía de diseño que difiere de la programación estructurada, donde los sistemas se descomponen en una colección de procedimientos y se piensa más en términos de procesos, instrucciones o algoritmos.

Pasamos a la acción

Si pulsamos el botón accionar, veremos que el (o los) wombat que hayamos creado se moverán una celda hacia la derecha mientras que las hojas permanecen quietas. Si pulsamos el botón ejecutar (run si lo tienes en versión inglesa), los wombats seguirán moviéndose celda a celda hacia la derecha con dos particularidades: si encuentran una hoja, ésta desaparece (se la come!) y si llegan a los límites del mundo (los lados del cuadrado), girán 90 grados y continuan en esa nueva dirección.

¿Por qué hacen cosas los wombats y no las hojas (leaf)? Métodos de la clase WombatLógicamente porque está así programado. Si nos posicionamos en un wombat situado en la cuadrícula  y accedemos al menú contextual (botón derecho ratón) nos aparecerá una lista de métodos, tal como vemos en la imagen de la derecha. Descubriremos más adelante, cuando inspeccionemos el código Java, que los métodos son un conjunto de instrucciones que hacen una determinada tarea, al estilo de las funciones que utilizamos en la programación estructurada.
Podemos adivinar más o menos de que se trata por sus nombres en ingles: act (actuar), eatLeaf (comer hoja), … Si pulsamos en cualquiera de ellos, ese objeto wombat  ejecutará la operación correspondiente. Por ejemplo, con move(), se moverá un cuadro a la derecha, con turnLeft(), se girará a la izquierda.

La palabra que aparece delante del nombre de los métodos (void, boolean, int) indica el tipo que tienen los valores que retornan al ejecutarlos (return type). Prueba a pulsar todos los métodos de la lista. ¿Qué observas?  Verás que hay dos tipos de métodos:

  • los que tienen un return type ‘void’ (‘vacio’ en inglés) ejecutan una acción y no devuelven ningún resultado
  • los que contestan con algún tipo de información. Con estos, estamos haciendo una pregunta al objeto:
    • canMove(): ¿puedes moverte?
    • foundLeave(): ¿has encontrado una hoja?
    • getLeavesEaten(): ¿cuántas hojas has comido?

    y devuelven distintos tipos de respuesta en un cuadro de diálogo:

    • boolean: valor ‘true/false‘ (es decir, ‘verdadero/falso’)
    • int: (número entero)

En la imagen de abajo vemos el ejemplo del resultado del método canMove(). Nos contesta ‘true‘, es decir, es verdad que el wombat puede seguir moviéndose porque no ha llegado a uno de los lados del cuadrado. Si movemos el objeto hasta el final e invocamos otra vez el método, veremos que nos contestará con un ‘false‘. Ese resultado lo puede utilizar el programa para decidir que el objeto gire y cambie de dirección su trayectoria. Lo veremos cuando analicemos el código Java.

Cuadro de dialogo del metodo canSee()

También habrás observado que uno de los métodos, setDirection (que podemos traducir por ‘establecer dirección’), contiene una expresión entre los paréntesis. Nos indica que para ejecutarlo el método está esperando que le pasemos un parámetro, en este caso ‘direction‘ que debe ser de tipo ‘int’. Prueba con los valores 0,1,2 y 3 y verás como el wombat cambia su orientación. Estamos modificando el valor de un atributo o propiedad de este objeto (lo explicamos en el cuadro de abajo). Si introduces otro tipo de valor que no sea un nº entero (por ejemplo un nº decimal como 2,3 o una letra) te devolverá un mensaje de error.

Otra detalle que habrás visto en la lista de métodos, es la primera entrada  ‘heredado de Actor‘. Si pulsas ahí, verás una lista adicional de métodos que están definidos en la clase Actor y que automáticamente también tiene la clase Wombat como puedes comprobar  ejecutándolos. Tiene que ver con el mecanismo de la herencia (una clase más genérica es `padre’ de una más específica, la ‘hija’ y ésta recibe sus características), fundamental en la POO y que explicaremos más adelante.

Una clase está definida por unos atributos y unos métodos:

  • Los atributos son las propiedades o características significativas de los objetos de esa clase. Por ejemplo, una clase ‘Alumno’ podría tener los atributos nombre, DNI, edad, sexo, calificación, … y cada objeto alumno tomaría unos valores determinados de ese conjunto de atributos compartidos. Serían los datos, el estado del objeto.
  • Los métodos son las operaciones o procedimientos que pueden realizar los objetos de esa clase. Sería su comportamiento.

Hay que entender que aunque estos objetos correspondan a ‘cosas reales’, son abstacciones esquemáticas en el contexto en que los utilizamos. Por ejemplo, un wombat, podría tener muchos atributos:  peso, edad, color,…pero al no ser significativos para el desarrollo de este juego, no están definidos en la clase Wombat. En cambio, veremos que sí tiene  otros como la dirección en que se está moviendo o el nº de hojas que ha comido.

Si pensaramos como objetos en primera persona, diríamos que los atributos son ‘lo que sabemos‘ (la información que conocemos) y los métodos son ‘lo que sabemos hacer‘.

Podemos intuir ya otra características fundamental de la POO: la encapsulación de datos y comportamiento dentro de cada clase-objeto. Los convierte en cierta manera en componentes ‘autocontenidos’  que podemos incluso diseñar como ‘cajas negras’, ocultando la complejidad interna al exterior (métodos de otras clases), con los que se comunicará solamente a través del interfaz que definamos.
Esta  característica  (junto a otras propias del enfoque orientado a objetos) hace que los programas bien diseñados sean más modulares que los que desarrollamos con un enfoque procedimental (*). Esa ‘modularidad’ los hará más flexibiles y escalables y nos facilitará la  reutilización de código (clases) en programas diferentes.

(*): La programación estructurada o procedimental, está basada en flujos de procesos que manipulan datos globales y ambos (datos e instrucciones) se engloban en un bloque no diferenciado, lo que le confiere mayor ‘rigidez’ ante cambios. Es cierto que con la creación de funciones, podemos ‘aislar’ ciertas funcionalidades y facilitar la reutilización de código pero no se consigue el mismo nivel de modularidad que en la programación orientada a objetos.

En próximos posts, accederemos al código Java de este programa para comprender  mejor como se implementan los conceptos que estamos presentando y generaremos un juego con objetos y reglas nuevas a partir de uno ya desarrollado. Mientras, si tienes curiosidad, abre el menú contextual de la clase Wombat y elige la opción ‘Abrir el editor‘. ¿Puedes entender cómo está construida y localizar los métodos de los que hemos hablado? Inténtalo, es un buen ejercicio…

]]>
/blog/clases-objetos-java-poo-greenfoot/feed/ 1