Programación gráfica: Objetos e interfaces orientados a gráficos [JAVA]

ejemplo_interfacesEn los pasos previos que hemos visto, aprendimos a instalar el entorno de desarrollo (IDE) de Eclipse y crear un nuevo proyecto, posteriormente se ha añadido un programa al proyecto Eclipse y hemos comenzado a estructurar la aplicación iniciando la construcción de los elementos de la librería gráfica.

El siguiente paso es definir un interface que será una clase JAVA que permita definir la acción de dibujar los gráficos y asignársela a los objetos, de forma que la clase encargada de pintarlos los reconozca.

Una interfaz en Java es una colección de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Serán las clases que implementen estas interfaces las que describan la logica del comportamiento de los métodos.(W)

Declaración del interface

Un “Interface” se declara de forma similar a una “Clase” en JAVA, se almacena en un fichero con extensión “.java” y su nombre debe coincidir con el del interface.

En el “IDE” añadiremos un interface al proyecto de forma similar a la que hemos visto desde el menú:

File->Add->Interface

o bien lo podemos hacer mediante el menú gráfico como se aprecia en la figura

addInterface

En la ventana que aparecerá para definir el interface deberemos indicar el nombre y el paquete en el que queremos que se guarde.

Usaremos el paquete “graph” donde estamos generando la librería y lo denominaremos “SimpleDrawable” ya que será el interface responsable de definir la propiedad de ser pintables (dibujables) los objetos que lo implementen.

add_interface_window

Al implementar el interface únicamente definiremos un método o función:

void paint(Graphics g);

Esta función permitirá que se puedan representar los objetos que la implementen,

interface_simpleDrawable_text

A continuación crearemos un objeto gráfico que implementará este “interface”, lo que nos permitirá entender el funcionamiento básico de esta metodología orientada a objetos y basada en “interfaces”.
El objeto a implementar será un simple punto en dos dimensiones, la clase “Point2D”. Lo añadiremos al paquete “graph” como el resto de elementos de nuestra librería que, posteriormente, podremos reutilizar construyendo objetos más complejos.
interface_simpleDrawable
El objeto declarará un par de variables encargadas de almacenar las coordenadas del punto que define. La variable “x” mantendrá la ordenada y la “y” la abcisa del punto.
int x=0;
int y=0;
Dispondremos de dos constructores de la clase, uno que no admite parámetros y otro que nos servirá para iniciar el objeto con unas coordenadas concretas.
public Point2D()
public Point2D(int x1, int y1)
La clase implementará el “interdace SimpleDrawable”. Esto obligará a implementar el método “paint” que se declara en el “interface” y que servirá para que el objeto se represente gráficamente en pantalla.
Punto2D
Para que la clase responsable de almacenar y pintar los objetos cumpla con sus requisitos necesitamos definir una forma de almacenar los objetos gráficos.
Una solución consiste en definir un “Vector” JAVA. Esta clase se encuentra en un paquete de los distribuidos en el core de la aplicación, y representa una memoria dinámica de almacenamiento.
Añadiremos una función denominada “addElement” que será la responsable de añadir elementos a la base de datos. Esta clase debe ser pública para permitir el acceso a la misma desde otras clases del programa.
Deberemos implementar la lógica que pinta los objetos en el método “paint”. Esta función irá analizando cada uno de los elementos que se encuentran en la base de datos (“Vector” de almacenamiento) y comprobará previamente si derivan del interface “SimpleDrawable” para saber si son representables. En caso de serlo, forzará la conversión de tipos y llamará a su función “paint”.
Para comprobar si el objeto implementa el “interface” utilizaremos la comprobación con la palabra reservada “instanceof
pizarra_bd
Se puede implementar esta lógica de maneras diferentes. En el primer caso se ha integrado una estructura de tipo “for-next” para extraer los elementos del “Vector”. En el segundo caso se ha presentado una alternativa con una orientación a objetos más genérica, mediante el uso de un “Enumeration“.
Se recomienda consultar los manuales básicos de programación en JAVA para analizar con detalle estas alternativas.
paint_enum
La estructura del proyecto habrá cambiado con la incorporación tanto del “interface” como de la clase “Point2D”. La biblioteca gráfica empieza a completar su estructura básica de funcionamiento.
Estructurainterfaces
Sólo nos queda modificar el programa principal de ejemplo para añadir algunos objetos a la base de datos que hemos definido en la clase “Blackboard”.
Para añadir elementos hemos definido una nueva función llamada “iniciarElementos()” que creará tres nuevos puntos con el operador “new” y, mediante la llamada a la función “addElement” del objeto “pizarra” , los incorporará a nuestra clase gestora de objetos.
iniciarElementos
El resultado de la ejecución del programa es el que se muestra en la imagen que se adjunta..

ejemplo_interfaces2

Los puntos que hemos almacenado en la base de datos se representan en las coordenadas con las que los hemos inicializado.
En caso de iniciar los objetos con el constructor sin parámetros, se representarían en las coordenadas (0,0) superpuestos unos sobre otros, ya que tendrían los valores por defecto.
El siguiente paso en nuestra estructura será ver cómo incorporamos la interacción al programa. Primero definiremos un motor de animación para gestionar elementos que interactuen o se muevan solos, y posteriormente indicaremos cómo manipular los objetos con el ratón.
JAVA

Curso JAVA

Related Posts

Blogs Documentales: Holoc...

Terremotos : Variación d...

linea

Programación gráfica: A...

ej3thumb

Animación 3D, Objetos: E...

Raytracing Distorsión [I...

Geometry_thumb

Geometry : Software educa...

laberinto_thumb

Laberinto Garfield con PH...

android_logo

Instalar el SDK de Androi...

java2D

DrawWorld ! [JAVA]...

About joju

José Juan Aliaga Maraver
Profesor del Departamento de Vehículos Aeroespaciales (DVA) de la Universidad Politécnica de Madrid.
Ha sido Subdirector del Dpto. DVA durante 10 años(Director en funciones 9 meses)
Es Coordinador del grupo de innovación educativa Visual Graphics Group (VGG) desde su constitución.
Es coordinador de las pruebas de Dibujo Técnico de las PAUs (Selectividad) de Madrid.
Colaborador de la URJC y el centro de Biotecnología de la UPM
Coordinador de las asignaturas de Dibujo del Master de formación de profesorado de la UPM.