PIZiadas gráficas

PIZiadas gráficas

Mi mundo es la imagen.

DrawWorld ! [JAVA]

Empezamos una serie de artículos que introducen el lenguaje de programación JAVA orientando su enfoque a la producción de applets con contenido gráfico.

El marco de un blog es especialmente útil para las pruebas, y el entorno twitter (su API) pueden servir para ilustrar su aplicación en el acceso a los datos disponibles en las redes sociales.

JAVA es un lenguaje que puede ser utilizado también para programar dispositivos móviles. El sistema operativo Android es una clara muestra de hasta donde ha llegado la expansión de éste lenguaje, ya que sus aplicaciones se programan en JAVA antes de ser convertidas a un código que entiende el terminal.

¿Tiene sentido hacer este material formativo? ¿No hay suficientes libros, tutoriales, manuales para hacer una nueva introducción?. ¿Depende del enfoque que demos al trabajo? Fundamentalmente tiene sentido si somos capaces de aportar algo nuevo, un cierto “valor añadido”.

  • Un enfoque orientado a la producción de software con contenido gráfico es un modelo que actualmente no está suficientemente documentado (resulta paradójico en entornos que son cada vez más visuales).
  • Un enfoque orientado a la formación en programación gráfica en entornos técnicos universitarios puede aportar un pragmatismo en la concreción de los ejemplos.

HelloWorld adaptado a gráficos

En general todo manual para aprender un lenguaje de programación empieza explicando el “conjunto de instrucciones y etiquetas” o también denominado “código”, que es necesario para, simplemente, escribir un texto; este código se presenta en forma de un programa de ejemplo y suele denominarse HelloWorld.

En nuestro ejemplo no escribiremos un texto (podríamos hacerlo de forma gráfica); en su lugar dibujaremos un simple círculo en la pantalla (ventana gráfica) en la que se visualizará la aplicación. Haciendo un paralelismo semántico, podemos denominar al primer programa DrawWorld.

import java.applet.Applet;
import java.awt.Graphics;
/**
* @author joju
*/
public class DrawWorld extends Applet {
public DrawWorld() { }
public static void main(String[] args) { }
public void paint(Graphics g){
g.drawOval(10, 10, 100, 100);
}
}

El texto anterior debe estar en un fichero denominado DrawWorld.java que ejecutaremos desde la línea de comandos o desde un IDE de desarrollo como se verá oportunamente. Nos centraremos inicialmente en entender la taxonomía del programa.

Importación de clases

Las primeras líneas:

 

 

 

import java.applet.Applet;
import java.awt.Graphics;
indican que usaremos objetos y funciones que se han definido en otros ficheros- En particular la clase “Applet” nos sirve como elemento principal del programa, ya que ejecutaremos el mismo a través de la funcionalidad que implementa. Para ejecutar el programa en un navegador necesitaremos un “objeto Applet”;

Documentación de la clase

Para documentar el código se utilizan comentarios. Un comentario puede estar limitado a una línea de texto o usar varias líneas completas.

  • Se utilizan dos barras “//” para indicar el comienzo de un comentario que termina al finalizar la línea.

// Esto es un comentario

  • Se utiliza (estilo JAVA) barra y dos asteriscos “/**” (puede ser también un solo asterisco”/*“) para indicar el comienzo del comentario que puede usar varias líneas. El comentario se cierra con la secuencia invertida de la barra y el asterisco, es decir con “*/“.
/**
* @author joju
*/

 

 

 

El comentario puede incluir “etiquetas” que facilitan posteriormente la generación automática de documentación de ayuda. El “autor” del programa, en este caso, puede consultarse desde la propia aplicación al haberse declarado en el comentario.

Clase

Un fichero JAVA, es decir con extensión “.java” contiene a una “Clase”. El nombre del fichero y el nombre de la clase deben ser el mismo.

public class DrawWorld extends Applet {
}

El fichero DrawWorld.java contiene a la clase pública DrawWorld que utiliza o “extiende” de la clase “Applet“. Esto significa que DrawWorld es en realidad un applet. Podemos incorporar a una página web nuestro applet, ya que ha heredado todas las capacidades al usar el operador “extends“.

La implementación de la funcionalidad de la “clase” se realiza mediante variables y funciones que se encuentran entre las llaves “{……}” que la delimitan.

Constructor de la Clase

Al iniciar un programo o generar un objeto nuevo en JAVA con el operador “new”, la aplicación ejecuta el código que se encuentra en lo que se denomina el “constructor de la clase”. Podemos pensar que es un “punto de inicio”

public DrawWorld() { }

En nuestro sencillo ejemplo simplemente se encuentra vacío y no realizará por tanto ninguna acción.

Otro punto de inicio de la aplicación es el método “main”, que se utiliza para iniciar el programa si se ejecuta como una aplicación no embebida en un navegador

public static void main(String[] args) { }

Dibujando en la pantalla

Nuestro clásico saludo se convertirá en un simple dibujo. El método “paint” es el responsable de “dibujar” la aplicación. Cada vez que se refresca la pantalla el sistema llama de forma automática a este método, en el que hemos incorporado una simple línea de código para “pintar” una curva oval (elipse o circunferencia en este caso) que se encontrará dentro del espacio que delimita un cuadrado de 100 unidades de longitud situado en las coordenadas (10,10):

 

public void paint(Graphics g){
g.drawOval(10, 10, 100, 100);
}
La función “drawOval” es un procedimiento que tiene la “clase Graphics”. Para dibujar en JAVA necesitaremos un objeto de esta naturaleza (objeto Graphics), que viene implementado en el núcleo de la aplicación. La función paint recibe como argumento un objeto Graphics que se etiqueta con la letra “g” de forma estandard.
Para acceder a los métodos del objeto “Graphics” añadiremos un “punto” al nombre (g) del objeto y seguidamente el nombre de la función.

 

De mano de la editorial O’REILLY tenemos un documento de gran interés.

Java 2D Graphics: Uno de los libros de introducción a la programación gráfica con JAVA más interesantes. Permite avanzar en cada uno de los aspectos de la biblioteca gráfica Java2D mediante ejemplos que destacan los aspectos más importantes y utilizados.

Un clásico de la programación 2D en JAVA

 

JAVA

Curso JAVA