Fundamentos de Programación > Clases > Ejercicios > ejercicio 4
El ejercicio busca extender el ejercicio 3 a un número indefinido de gusanos.
Puede descargar Ejercicio4.jar para ver cómo funciona con 2 gusanos.
public interface Funcion { /** * Valor de X en función de t. * * @param t parametro. * @return x(t). */ double fx(double t); /** * Valor de Y en función de t. * * @param t parametro. * @return y(t). */ double fy(double t); }
de la que hay que derivar 3 implementaciones concretas
En el ejemplo ejecutable anterior, se han empleado las funciones
Funcion0() Funcion2(5, 3) fx(t) = 2 cos(t) + cos(8t)
fy(t) = 2 sen(t) + sen(8t)fx(t) = 3 sen(At)
fy(t) = 3 cos(Bt)
El alumno puede utilizar otras.
public interface ColaLimitada extends Iterable{ /** * Anade un punto al final de la cola. * Si se supera el tamano maximo, se elimina el primer punto de la cola. * * @param punto nuevo punto. */ public void mete(Punto2D punto); /** * @return el numero de puntos en la cola. */ public int size(); /** * Para recorrer los puntos metidos en la cola. * * @return iterador sobre los puntos en la cola. */ public Iterator iterator(); }
El alumno debe proporcionar 2 implementaciones:
Nótese que ColaLimitada extiende la interface Iterable que obliga a proporcionar un mátodo "iterator" que permite hacer bucles del tipo "for each">.
import java.awt.*; public class Gusano { private final Funcion funcion; private final ColaLimitada cola; private final Color color; /** * Constructor. * * @param funcion una funcion parametrica. * @param cola una cola de tamano limitado. * @param color un color para pintar. */ public Gusano(Funcion funcion, ColaLimitada cola, Color color) { this.funcion = funcion; this.cola = cola; this.color = color; } /** * Getter. * * @return funcion parametrica. */ public Funcion getFuncion() { return funcion; } /** * Getter. * * @return cola de puntos. */ public ColaLimitada getCola() { return cola; } /** * Getter. * * @return color para pintarse. */ public Color getColor() { return color; } }
O sea, un clase que simplemente agrupa todos los elementos que definen un gusano.
Algo así:
para t desde el valor inicial al final con incrementos dt
se borra el papel
para cada gusano en la lista
usando la función del gusano,
se calcula un punto2D,
se mete en la cola del gusano y
se pinta la cola del gusano del color que corrsponde
se pinta el papel
se espera un ratito para ver la imagen (ej. 0.1s)
El alumno debe presentar las siguientes clases: