Práctica 4. Moviles.

(17 de Noviembre de 2006)

Este enunciado puede ser modificado para introducir nueva información o modificar errores en cualquier momento. Se recomienda al alumno que compruebe periódicamente este enunciado por si tales cambios se producen.

Descripción

En esta práctica vamos a desarrollar una aplicación para simular el movimiento de varios elementos dentro de un espacio de dos dimensiones, de forma que cada elemento se mueva siguiendo su propia trayectoria, y calcularemos como cada elemento ve el movimiento de los demás. Es decir, es como si cada elementos móvil tuviese una cámara sobre él, y pudiesemos ver la imagen captada por cualquiera de las cámaras.

Esta práctica consta de numerosos ficheros java. Algunos se proporcionan hechos en su totalidad, y otros incompletos con el objetivo de que el alumno los complete.

Móviles

Los elementos móviles los vamos a representar con objetos de la clase Movil, que se construyen pasándoles un nombre, una figura y un tipo de movimiento.

En la clase Movil se definen métodos para dibujarlos en una pantalla, y obtener su posición en un momento de tiempo dado.

La clase Movil debe realizarla el alumno de forma que se ajuste a la documentaci&oacite;n siguiente: javadoc de la práctica

Nombres

Los nombres de los móviles son simplemente Strings que usaremos para identificar los móviles cuando los dibujemos en la pantalla.

Figuras

Los móviles se deben dibujar en la pantalla usando la forma gráfica o imagen que se desee. Para ello, definiremos una interface, llamada Figura, que representará a cualquier tipo de forma gráfica o imagen, y que define un método para pintarse en la pantalla.

Esta interface la debe escribir el alumno de forma que se ajuste a la documentaci&oacite;n siguiente: javadoc de la práctica

Además, crearemos tres clases de figuras: Cuadrado, Triángulo y Círculo. Los triángulos se definen en función de tres puntos que representan las coordenadas de sus vértices a partir de un punto (0,0) virtual. Los Círculos se definen en funcio´n de su radio, y los cuadrados en función de su lado.

Estas clases implementarán la interface Figura, y el alumno debe crearlas de forma que se ajusten a la documentaci&oacite;n siguiente: javadoc de la práctica

Movimientos

Un movimiento nos indica que trayectoria seguirá un móvil según pasa el tiempo. Para poder usar diferentes tipos de movimientos, definimos la interface Movimiento, y posteriormente realizaremos varias implementaciones de esta interface.

Esta interface define un método llamado avanza que calcula cual será la nueva posición de un elemento para un instante de tiempo dado. El método avanza calculará cuales son los nuevos valores de la posición (x,y,a) según el tipo de movimiento que represente.

Crearemos cinco tipos de movimiento:

La interface Movimiento y sus implementaciones deben ajustarse a la documentaci&oacite;n siguiente: javadoc de la práctica

Punto

Esta clase representa unas coordenadas (x,y), y es idéntica a la definida en la práctica anterior. Únicamente debe modificarse para su uso dentro del paquete fprg13.p4.posicion.

Posiciones

Para representar la posición de un elemento en un espacio de dos dimensiones es necesario un ángulo de giro, además de las coordenadas (x,y). Así, la clase Posicion permite crear objetos que representan un punto y un ángulo de giro.

Posicion = Punto (x,y) + Angulo de giro

La clase Posicion debe realizarla el alumno de forma que se ajuste a la documentaci&oacite;n siguiente: javadoc de la práctica

Camaras

Necesitamos la clase Camara desarrollada en la práctica anterior, pero sobrecargando el método vista para que dada una posición, devuelva como se ve esa posición desde donde esté emplazada la cámara.

Además, debe modificarse esta clase para su uso dentro del paquete fprg13.p4.posicion.

La clase Camara debe realizarla el alumno de forma que se ajuste a la documentaci&oacite;n siguiente: javadoc de la práctica

Pantalla

Además de esta clases e interfaces, para el desarrollo de esta práctica usaremos la clase Pantalla de la práctica anterior, pero adaptándola para su uso dentro del paquete fprg13.p4.pantalla.

Paquetes

Esta práctica consta de numerosos ficheros que se organizarán en cinco paquetes:
fprg13.p4.pantalla 
fprg13.p4.posicion
fprg13.p4.figuras
fprg13.p4.movimientos
fprg13.p4.moviles
que se corresponden con los directorios
$HOME/fprg13/p4/pantalla 
$HOME/fprg13/p4/posicion
$HOME/fprg13/p4/figuras
$HOME/fprg13/p4/movimientos
$HOME/fprg13/p4/moviles
en los que deben colocarse los ficheros para realizar la entrega de la práctica.

Consúltese la documentaci&oacite;n siguiente: javadoc de la práctica para saber en que paquete va cada fichero java a realizar.

Pruebas

Para probar esta práctica se proporcionan varias pruebas ya hechas. Todas estas pruebas pertenecen al paquete fprg13.p4.pruebas, con lo cual deben copiarse en el directorio adecuado.

Fecha de Entrega

Los ficheros de la práctica se dejarán en el directorio $HOME/fprg13/p4 de la cuenta de laboratorio del representante de los grupos de trabajo, antes de las 24:00 del día 29 de Noviembre de 2006.

Página actualizada el día 17 de Noviembre de 2006.