POO – 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 Videotutorial: Java y la Programación Orientada a Objetos /blog/videotutorial-java-programacion-orientada-a-objetos/ Thu, 27 Feb 2014 09:30:34 +0000 /?p=8436 Queríamos compartir con vosotros un videotutorial de nuestro curso online de Java básico para Android y Programación orientada a Objetos. En él, os hablamos de algunos conceptos fundamentales de la Programación Orientada a Objetos (también conocida por el acrónimo POO), como son la Herencia, la Encapsulación y el Polimorfismo a la vez que lo explicamos con unos ejemplos concretos implementados en el lenguaje de programación Java.

Si estás interesado en conocer Java, POO y/o programación en Android, con esta formación compuesta por videotutoriales, documentación en pdf y ejemplos descargables, foros, tests y sobre todo, numerosos ejercicios, podrás aprender practicando con la ayuda personalizada del tutor,  Víctor Rivas, al que podrás consultar todas tus dudas.

Para ver mejor el video, en la parte inferior del visor (espera unos segundos si no te aparece) puedes cambiar si lo deseas la calidad a ‘HD’ (alta definición, 720p) en el icono de configuración (rueda dentada) o pasarlo a pantalla completa (icono cuadrado abierto). Para que te aparezcan estas opciones debes iniciar el video y situar el ratón dentro del visor.

Esperamos que os guste!

Ah!, y si quieres descargarte el código fuente de los ejemplos que se muestran en el video (formato zip), te pedimos solo un favor, que nos ayudes a difundirlo este video en Twitter. Pulsando el siguiente enlace, se publicará el texto: “Viendo el videotutorial del curso Java para Android de @dlformacion en ”). Gracias!

Pagar con un Tweet para descargar Ejemplo Java-Geometria ]]>
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

 

]]>
Programando en Java con Greenfoot /blog/programando-en-java-con-greenfoot/ /blog/programando-en-java-con-greenfoot/#comments Sun, 05 Aug 2012 20:28:32 +0000 /?p=5904 En el anterior post, donde explicábamos conceptos básicos de la POO como las clases, objetos, métodos y atributos, nos apoyamos principalmente en el interfaz visual que nos ofrece Greenfoot. En este artículo, vamos a entrar un poco más a fondo y explorar el programa Java que estamos creando con la ayuda de esta herramienta.

Abrir el editor de codigo Java

Para ello, con el proyecto abierto, nos situamos en la clase wombat en el diagrama de la derecha. Hacemos que aparezca el menú contextual (botón derecho del ratón) y elegimos ‘Abrir el editor‘. Lo que vemos es el código escrito en lenguaje Java que define esta clase.

Si tienes muy poca experiencia en programación quizás te resulte casi incomprensible, pero analizando por partes verás que no es tan difícil de entender.

En una primera revisión, como podemos ver en la imagen de abajo, se distinguen varias secciones enmarcadas con recuadros de distintos colores que explicaremos a continuación:

Secciones del código Java de una Clase

* Importación de clases: es la sección inicial, en fondo blanco. Mediante la cláusula ‘import‘, podemos incluir las clases que necesitemos en nuestro programa  para que todo funcione correctamente. Las clases suelen encontrarse agrupadas de forma lógica en librerías o packages(paquetes). Un paquete es por tanto un conjunto de clases ya construidas que podemos utilizar en nuestra aplicación, lo que nos ahorra programar todas las funcionalidades desde cero:

import greenfoot.*;  // (World, Actor, GreenfootImage, and Greenfoot)
import java.util.List;
import java.util.ArrayList;

En el apartado ‘la API de Java’, en este mismo artículo, te explicamos más en detalle estos conceptos.

* Declaración de la clase: es el bloque donde definimos la clase Wombat en sí y que está delimitada visualmente por un cuadro verde. Comienza con unos comentarios (qué hace la clase, su autor, versión…), cuyo inicio y final se marcan con los caracteres ‘/* ‘ y ‘*/’ (es muy recomendable incluir comentarios a lo largo del programa para hacer más entendible nuestro código) y continúa con:

public class Wombat extends Actor
{ ...............
...............

la expresión public class Wombat extends Actor’ la podríamos traducir literalmente por ‘la clase Wombat extiende la clase Actor , y encierra uno de los elementos fundamentales de la POO, la herencia. Explicaremos más detenidamente el concepto de herencia en un siguiente apartado en este artículo, pero básicamente estamos diciendo que creamos la clase Wombat (más específica) a partir de la clase Actor (más genérica) ‘heredando’ o teniendo disponibles sus atributos y métodos.

El término  public es un modificador de acceso y define a esta clase como pública, siendo accesible por tanto por cualquier otra clase. Por defecto, si no incluímos ningún modificador (default), solo sería accesible por clases que están incluídas en su paquete.
Hay otros dos modificadores de acceso, que al igual que los anteriores, también son aplicables a los métodos y a los atributos: protected (similar a default aunque permite heredar a una subclase que no está en el paquete ) y private (si queremos que los  métodos o atributos sean solo accesibles dentro de la clase). Si quieres saber más, puedes consultar este artículo sobre modificadores Java.

El código que define la clase se encierra entre llaves  ‘{‘ y ‘}’ ‘. Vemos que a su vez tiene bloques diferenciados, Vamos a analizarlos:

* Declaración de atributos: es el recuadro inicial en fondo blanco:

private static final int EAST = 0;
private static final int WEST = 1;
private static final int NORTH = 2;
private static final int SOUTH = 3;

private int direction;
private int leavesEaten;

El grupo de los cuatro primeros: EAST, WEST, NORTH y SOUTH, son las direcciones a las que puede orientarse el Wombat. Son de tipo entero (int) y se han definido de forma que actúan como constantes para cualquier objeto Wombat al tener los modificadores final y static. El primero no permite que se modifiquen sus valores (0,1,2 y 3),y el segundo las define como variables de clase, es decir, no es necesario crear un objeto para utilizarlas. Recordemos en el anterior post el efecto que producía pasar uno de estos números como parámetro al método setDirection(int direction). ¡Hacían que el Wombat se girará a derecha, izquierda, arriba o abajo !. El otro modificador (private) indica que solo son accesibles dentro de la clase.

El grupo de los dos siguientes atributos, direction y leavesEaten, son variables de instancia y almacenarán la información en formato entero (int) de la dirección y las hojas que han comido cada uno de los objetos Wombat que creemos (instanciemos) a partir de esta clase. Se les denomina también campos y toman valores particulares a nivel de objetos.

* Constructor: es el proceso que crea un objeto a partir de una clase y que se ejecuta automáticamente cada vez que instanciamos un objeto (al seleccionar new WombatWordl, new Wombat() ó new Leaf()).
Su código aparece en el recuadro amarillo justo debajo de la definición de atributos:

<strong>public Wombat()</strong>
{
setDirection(EAST);
leavesEaten = 0;
}

Tiene la misma estructura que un método aunque con algunas particularidades: debe tener siempre el mismo nombre que la clase y no tener ningún return type.

No es necesario declarar siempre un constructor, ya que toda clase tiene uno que inicializa los campos del objeto con valores por defecto. Si queremos personalizar ese proceso de creación, entonces podemos escribir uno o varios constructores, a los que a su vez podemos pasar o no parámetros. Por ejemplo, en este caso, el constructor inicializa los campos direction con el valor ‘EAST’ y leavesEaten con el valor ‘0’.

* Métodos: todo el código restante de esta clase, son las definiciones de sus métodos. Cada uno aparece en un recuadro amarillo, con una estructura muy parecida:

  • Comentario indicando que realiza ese método
  • Declaración del método: ‘public void act()‘, ‘public boolean foundLeaf()‘, ‘public void eatLeaf()‘,…
  • encerrados entre llaves {}, las instrucciones que han de ejecutarse

Aunque no podemos entrar en detalle de todo el código, vamos a revisar por ejemplo el primer método que aparece: act()

<strong>public void act()</strong>
{
if(foundLeaf()) {
eatLeaf();
}
else if(canMove()) {
move();
}
else {
turnLeft();
}
}

Sabemos por un post anterior, que la palabra reservada void nos indica que el método no devolverá ningún valor. Interpretando o traducciendo del inglés el código encerrado entre las llaves, vemos que hay una estructura condicional:

if(condición 1) {
instruccion 1…..
}
else if (condición 2) {
instrucción 2
}
else {
instrucción 3
}

If, es el ‘si’ condicional en inglés y el ‘else’ nos permite evaluar una alternativa.  Podríamos leer todo este código literalmente como:
“si se cumple la condición 1, ejecuta  la instrucción 1, si en cambio se cumple la condición 2, ejecuta la instrucción 2 y en cualquier otro caso (no se cumple ninguna de las dos anteriores), ejecuta la instrucción 3”

¿Qué condiciones e instrucciones hay? Pues vemos que son precisamente llamadas a otros métodos de este mismo objeto. Si seguimos traduciendo literalmente sería algo así como:

“si se cumple la condición ‘he encontrado una hoja’, ejecuta ‘comer hoja’, si en cambio se cumple la condición ‘puedo moverme’, ejecuta la instrucción ‘mover’ y en cualquier otro caso, ejecuta la instrucción ‘gira a la izquierda’ ”

Si queremos cambiar el comportamiento de los Wombat que creemos, solo tenemos que modificar los métodos adecuados. Lo iremos viendo en próximos posts, pero puedes practicar un poco con cambios sencillos. Por ejemplo, si modificas este método act() en su primer condicional de forma que añadas llamadas a los otros dos métodos de la forma:

if(foundLeaf()) {
eatLeaf();
turnLeft;
move(3);
}

¿qué ocurrirá cuando el Wombat encuentre una hoja? Es fácil de adivinar ¿verdad?. Prueba las variantes que quieras y no olvides compilar siempre después de realizar los cambios. Puede ser buena idea que al hacer el primer cambio guardes el proyecto con otro nombre (save as…) y continuar ya con éste, de forma que mantegas el proyecto y código original de referencia.

La API de Java

Si analizamos más en detalle el primer bloque, vemos que estamos importando las clases  List y ArrayList que están contenidas en el package java.util. Estos paquetes están organizados de forma jerárquica a modo de directorios/carpetas, agrupando clases relacionadas entre sí y la notación  ‘.’  nos indica que estamos descendiendo en la jerarquía de esa estructura. La librería java.util se suministra en el entorno de desarrollo Java SE que si recordamos, instalamos al inicio. Podemos ver todo el conjunto de paquetes disponibles para la versión 7 en lo que se denomina la API de Java: http://docs.oracle.com/javase/7/docs/api/index.html

Si accedemos a ella, podemos pinchar en cualquier package y nos mostrará todas las clases que contiene.  Por ejemplo en java.util, veremos que tanto List como ArrayList son dos interfaces (una construcción en Java similares a las clases que veremos más adelante). Si pinchamos a su vez en cualquiera de ellas, nos mostrará todos sus métodos y los detalles de implementación. Esta documentación es de gran utilidad, con miles de clases y sus métodos correspondientes. Es una herramienta con la que un programador Java debe familiarizarse para localizar clases y métodos que puedan tener funcionalidades que necesite para su programa y saber cómo utilizarlas.

Por defecto, en cualquier clase que construyamos se incluirá el package java.lang, que contiene clases fundamentales para el funcionamiento de cualquier programa Java. En concreto, el paquete java.lang,contiene la clase Object, que es la superclase de todas las clases existentes en Java, es decir la que se encuentra en la raíz de esta estructura jerarquica.

La otra libreria que importamos es la de Greenfoot. Esta es una colección de clases que han sido desarrolladas por los creadores de este entorno para facilitar la creación de los juegos y simulaciones.

En este caso no viene incluída en el Java SE 7, sino que se instalan con el propio programa, y la denominaremos API de Greenfoot. También podemos acceder a su documentación con información muy valiosa sobre las clases que contiene (descripción de su funcionalidad, métodos y atrbutos)  en: http://www.greenfoot.org/files/javadoc/

 

Herencia

El mecanismo de herencia de la POO facilita la creación de una nueva clase a partir de una ya existente. Esta nueva clase tendrá (heredará) los atributos y métodos de la anterior, pudiendo mantener o modificar dichos elementos o añadir unos nuevos si así lo necesita, para que se adapten a sus características y comportamiento particulares (recordemos la expresión ‘extiende a…’).

Si nos fijamos en las flechas del diagrama de clases que nos aparece en el lado derecho del proyecto Wombat, veremos que nos indican la jerarquía o relaciones de herencia entre ellas. Decimos  que ‘la clase Actor es padre o es una superclase de las clases Wombat y Leaf(hoja)’ o viceversa, ‘Wombat y Leaf son subclases o clases hijas de la clase Actor‘. Estamos indicando que ésta es más genérica que las clases WombatLeaf y que hay una relación ‘is-a‘ (‘Wombat es un Actor’, ‘Leaf es un Actor‘).

Un aspecto que debemos tener en cuenta es que estas relaciones de jerarquía deben tener sentido, pero no tienen que ser idénticas y recrear todas las que existen en el mundo real. Ya comentamos que en la POO, modelamos una situación que queremos tratar con nuestro programa en base a abstracciones esquemáticas (clases)  que van a sernos útiles en ese contexto. En el mundo real, existiría, de manera simplificada,  la relación de herencia: Animal –> Mamífero –> Wombat, pero en el contexto del juego que estamos creando, esas características (animal, mamífero) no son relevantes. Preferimos crear una clase Actor que define a cualquier elemento que podemos poner en el juego para que ‘actúe’ (juegue). La clases en este caso modelan los ‘roles’ que van a desempeñar los objetos.

Para ver como funciona todo esto en Greenfoot, podemos hacer una prueba. Elige con el ratón la clase Actor y en el menú contextual (botón derecho ratón) elige ‘Nueva subclase‘. Puedes crear la que quieras, por ejemplo Roca, y elegir la imagen ‘rock.gif’. Verás que aparece en el diagrama de clases, al mismo nivel que Wombat y Leaf. Compila el escenario (botón en la parte inferior derecha) y si abres el editor de código, ¿qué características tiene esta nueva subclase?. Como ves solo cuenta con el método act(), pero si creas un objeto Roca con newRoca() y la situas en el cuadrado del juego, puedes seleccionarla y con el menú contextual ver que  en la opción ‘heredado de Actor‘ aparecen muchos otros métodos. Si eliges por ejemplo move(), y pones ‘3’ en el cuadro de diálogo que te aparece a continuación, ¡la roca se mueve tres cuadrados a la derecha!. Es decir, funciona un método que no veíamos en el código de esta clase al haberlo heredado de su superclase Actor.
¿Qué ocurre con los atributos?. Si seleccionas en la clase la opción ‘Inspeccionar’ del menú contextual verás que dice que no hay, lo que indica que la clase Actor no tiene variables de clase. Si haces lo mismo en el objeto Roca que creamos antes, verás que sí aparecen una serie de variables de instancia (objeto) como son su posición en los ejes X e Y. Arrastra la roca a otra celda y verás como los valores de esas variables van cambiando.

Si quieres, puedes dar un paso más  y crear ahora una subclase de Wombat. Por ejemplo Hormiga. Si sigues los mismos pasos que antes verás que ahora sí aparecen las variables de clase EAST, WEST, NORTH y SOUTH y al seleccionar un objeto Hormiga en el cuadro de juego comprobarás que ahora no solo hereda todos los métodos de Actor, sino también de Wombat. En ese mismo objeto, al inspeccionar los atributos, aparecerán también las variables de instancia  ‘direction‘ y ‘leavesEaten‘.

]]>
/blog/programando-en-java-con-greenfoot/feed/ 4
Greenfoot: introducción a Java y a la Programación Orientada a Objetos /blog/java-programacion-orientada-objetos-greenfoot/ /blog/java-programacion-orientada-objetos-greenfoot/#comments Sun, 08 Jul 2012 13:31:27 +0000 /?p=5824 Vamos iniciar una serie de artículos relacionados con Greenfoot, un entorno de desarrollo (IDE) para Java con fines educativos. Con esta herramienta podemos crear aplicaciones gráficas (simulaciones, juegos…) en dos dimensiones que nos permiten familiarizarnos con Java y los conceptos básicos de la Programación Orientada a Objetos (POO) de una forma práctica y divertida.

A la vez que mostramos este entorno, iremos ampliando información sobre algunos aspectos de  Java y la POO. Podemos manejar esta herramienta sin necesidad de leer esta información, pero será útil para los que quieran aprender más sobre programación. Esta información adicional la incluiremos en recuadros, diferenciándolos de la documentación básica.

Greenfoot es un proyecto de software libre y gratuito,  desarrollado en la Universidad de Kent (UK),  enfocado en principio a jóvenes estudiantes que quieren inicarse en el mundo de la programación. Existen otras herramientas con objetivos similares, como Scratch o Alice, pero Greenfoot tiene características más avanzadas, como la edición de código fuente en Java, lo que lo hace más potente e incluso interesante para personas que tienen ya conocimientos en programación. Greenfoot se distribuye gratuitamente con licencia GNU GPL y está disponible para Windows, Mac OS X y Linux.

Instalación del programa Greenfoot

Descarga e instalación del JDK

Para ejecutar Greenfoot es necesario tener instalado previamente el entorno de desarrollo Java (JDK),  que provee las herramientas para programar y ejecutar aplicaciones en este lenguaje. Podemos descargarlo de forma gratuita desde esta página:

http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u3-download-1501626.html

eligiendo la versión acorde a nuestro sistema operativo e instalándola según el proceso habitual de nuestro sistema.

pantalla descarga del JDK

Nosotros vamos a descargar el JDK (Java Development Kit ) denominado SE (Stándar Edition) versión 7 (es la última, aunque también valdría la versión 6) que incluye a su vez el JRE (Java Runtime Enviroment – Entorno de Ejecución de Java). El JRE puede descargarse e instalarse de forma autónoma, lo que nos permitiría ejecutar aplicaciones Java en nuestro equipo, pero no crear y compilar programas en este lenguaje. Además de la SE, utilizada usualmente para aplicaciones en entornos desktop-PC, hay otros kit de desarrollo: como ME, EE, FX,… que están orientados a otros tipo de entornos (móviles, aplicaciones corporativas, interfaz webs…)

Descarga e instalación de Greenfoot

Una vez instalado JDK, pasamos a la instalación del programa. Para ello nos dirigimos a la página http://www.greenfoot.org/downloadDescarga Greenfoot

Una vez alli, se nos presentan distintas versiones dependiendo del sistema operativo que usemos, e incluso podemos descargar una versión Java para cualquier SO o una que corra desde una memoria USB.

¡Ojo!, en el caso de que nos hubiésemos saltado el anterior paso, se hubiera instalado incorrectamente el JDK o en un directorio que el instalador de Greenfoot no encuentra nos  aparecería un mensaje de error: “No (suitable) Java SDK s were found…“. Debemos comprobarlo o proporcionarle el directorio donde lo tenemos ubicado en nuestro equipo.

Durante la instalación se eligirán diversas opciones respecto al programa, tales como su ubicación y si se desea crear accesos directos al escritorio.

Edición del fichero greenfoot.defs para cambio de idiomaSi queremos cambiar la interfaz del programa a español, deberemos modificar el fichero “greenfoot.defs” que se encuentra en la carpeta “lib” ubicada en el directorio donde hallamos instalado el programa (p.ej., por defecto en Windows:  “archivo de programas/greenfoot/lib/greenfoot.defs“).

Para ello lo editamos con un editor de texto como el Bloc de Notas ó Notepad++ y quitaremos el carácter comentario “#” del idioma español y se lo pondremos delante del idioma inglés (ver imagen a la izquierda). Si tienes dudas, consulta la página de traducciones en su sitio web.

 

Inicio de Greenfoot

Una vez instalado, iniciamos Greenfoot. Sus aplicaciones se basan en Escenarios, que contienen todos los elementos necesarios para que dichos programas se visualicen y funcionen. Los escenarios incluyen un fondo gráfico, denominados Mundos (Worlds), y Actores (Actors ) que colocaremos en dichos mundos y que realizan acciones (ya lo veremos más adelante).
Hay muchos escenarios disponibles. El programa viene con algunos instalados pero también podemos acceder a escenarios creados por otros usuarios que los comparten libremente en la web de Greenfoot.

La primera vez que accedemos al programa nos saldrá un cuadro con opciones para empezar con un escenario ejemplo, elegir algún otro, crear uno nuevo o continuar sin cargar nada. Si elegimos un escenario, nos aparecerá otro mensaje indicándonos que debemos guardarlo en otra carpeta si queremos modificarlo:

Mensaje inicio GreenfootMensaje esceario greenfoot

 

Si escogemos el escenario ‘Wombat’ y lo guardamos en una carpeta (p.ej: ‘proyectos_greenfoot‘ en un directorio personal), nos lo abrirá pero sin ningún fondo gráfico. Si pulsamos el botón ‘Compilar todo’ en la parte inferior derecha, nos debe aparecer ya el mundo cargado. Nosotros vamos a crear un Wombat (un marsupial de Australia) y tres hojas:

Escenario Wombat

¿Te animas a jugar ya con este escenario?. Una pista: selecciona la casilla Wombat con el ratón y pincha el botón derecho para que te aparezca el menú contextual. Si no sabes como seguir, en los siguientes posts te iremos contando como hemos creado los ‘actores’, cómo se juega y cómo podemos ir adaptado éste o cualquier otro escenario mediante programación Java de forma muy sencilla.

]]>
/blog/java-programacion-orientada-objetos-greenfoot/feed/ 3