גראַפיקאַל פּראָגראַממינג: כייפעץ אָריענטיד גראַפיקס און ינערפייסיז [דזשאַוואַ]

ejemplo_interfacesEn los pasos previos que hemos visto, aprendimos a instalar el entorno de desarrollo (ייד) דע עקליפּסע און crear un nuevo proyecto, posteriormente se ha añadido un programa al proyecto Eclipsאון 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 צובינד que será una clase דזשאַוואַ 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.

א interfaz אין ז'אבא 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.(די)

Declaración del interface

א “צובינד” se declara de forma similar a unaClaseen JAVA, se almacena en un fichero con extensión “.javay su nombre debe coincidir con el del interface.

אין די “ייד” añadiremos un interface al proyecto de forma similar a la que hemos visto desde el menú:

File->לייג->צובינד

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 paquetegraphdonde estamos generando la librería y lo denominaremosSimpleDrawableya 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(גראַפיקס ג);

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

interface_simpleDrawable_text

דעמאָלט crearemos un objeto gráfico que implementará este “צובינד”, lo que nos permitirá entender el funcionamiento básico de esta metodología orientada a objetos y basada eninterfaces”.
El objeto a implementar será un simple punto en dos dimensiones, la clasePoint2D”. Lo añadiremos al paquetegraphcomo el resto de elementos de nuestra librería que, שפּעטער, 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. די בייַטעוודיק “X” mantendrá la ordenada y la “און” 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.
עפנטלעך Point2D()
עפנטלעך Point2D(ינט x1, int y1)
La clase implementará elinterdace SimpleDrawable”. Esto obligará a implementar el método “פאַרב” que se declara en el “צובינד” 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 unVector” דזשאַוואַ. 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 denominadaaddElementque 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 “פאַרב”. Esta función irá analizando cada uno de los elementos que se encuentran en la base de datos (“Vectorde almacenamiento) y comprobará previamente si derivan del interfaceSimpleDrawablepara saber si son representables. En caso de serlo, forzará la conversión de tipos y llamará a su función “פאַרב”.
Para comprobar si el objeto implementa el “צובינד” utilizaremos la comprobación con la palabra reservadainstanceof
pizarra_bd
Se puede implementar esta lógica de maneras diferentes. En el primer caso se ha integrado una estructura de tipofor-nextpara extraer los elementos delVector”. En el segundo caso se ha presentado una alternativa con una orientación a objetos más genérica, mediante el uso de unEnumeration“.
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 “צובינד” como de la clasePoint2D”. 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 claseBlackboard”.
Para añadir elementos hemos definido una nueva función llamadainiciarElementos()” que creará tres nuevos puntos con el operadornew” און, mediante la llamada a la funciónaddElement” כייפעץ “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 אַנאַמיישאַן מאָטאָר para gestionar elementos que interactuen o se muevan solos, y posteriormente indicaremos cómo manipular los objetos con el ratón.
JAVA

לויף דזשאַוואַ