Diseño
y Programación Orientados a Objetos
1er. Sem 2010
Tarea 3: Applet para Simulador Gráfico de Masas, Resortes y Elásticos como Objetos de Software
Recomendación: Lea detenidamente la tarea. Si algo no lo
entiende, consulte en clases. Si es preciso, se incorporarán
aclaraciones al final.
Sumado a los objetivos de la tares 2, esta tarea tiene por objetivos:
* Generar documentación con Javadoc.
* Crear gráficos en Java.
* Creación de archivos .jar
* Aplicar elementos de Ingeniería de software.
Descripción General
En la tarea 2 conocimos las limitaciones del algoritmo de simulación de
los componentes físicos considerados. El sistema gana energía como
consecuencia de la manera como éste es simulado. Para aliviar el
problema generado por las cuerdas, en esta tarea usted las reemplazará
por elásticos (Rubber band). Éstos pueden ser modelados en forma
similar a las cuerdas, pero con constante de elasticidad normal (no muy
grande o "infinita").
Básicamente ahora usted podrá correr las simulaciones a través
de Internet usando un Applet. Además deberá crear las clases necesarias
para incluir un tres gráficos para una masa del experimento: el primer
gráfico mostrará la coordenada en un eje (digamos X) en función del
tiempo, otro con la coordenada en el eje perpendicular (digamos Y) y
otro con la trayectoria del objeto en un gráfico XY.
Trabajo a desarrollar
Respecto
de la especificación de la tarea 2, usted deberá cambiar la clase
MyString y GString, por RubberBand y GRubberBand. Refleje el
comportamiento de un elástico. Cuando éste sea seleccionado del menú,
su programa pedirá el largo y la constante de elasticidad a través de
ventanas de diálogos o algo gráfico equivalente.
El tiempo de refresco inicial (refresh time) y el paso de simulación
(delta time), deben ser definidos en el html. Ante su ausencia, el
applet usará los mismos valores de la tarea 2. Para ello los nombres de
los parámetros serán: RefreshTime y DeltaTime.
Si usted lo desea puede definir otros parámetros, pero su applet debe
funcionar bien si se especifican los parámetros ya mencionados, sólo
uno de ellos o ninguno de ellos. Más abajo se agrega otro parámetro.
El Applet debe dividir el área de despliegue en dos con JSplitPane. A
la izquierda debe verse la simulación y a la derecha tres gráficos
ordenados verticalmente. Los gráficos deben tener título, y nombre para
cada eje. El gráfico superior es del tipo y v/s t, el que le sigue x
v/s t y el tercero y v/s x. Los gráficos deben mostrar la posición en
el tiempo y trayectoria de una masa. Para seleccionarla, incorpore el
ítem de menú "Select" directamente con la barra de menú luego del menú
Simulator. Al posicionarse sobre Select, debe aparecer un "tool tip"
"Select mass to be plotted). Los gráficos de tiempo deben mostrar sólo
el últimos N segundos de la simulación, donde N es un parámetro
especificados en el HTML (default = 30 segundos). El nombre de este
parámetro en el html es "timeWindowSize"
Cada vez que se selecciona otra masa, el gráfico parte nuevamente borrando toda historia pasada.
Use Javadoc para actualizar la documentación correspondiente a la clase "RubberBand" y "GRubberBand".
Prepare sus archivos de modo de incluir una clase PhysicsLab que
permita ejecutar su solución como aplicación y la clase
PhysicsLabApplet que lo haga como applet. Para el caso de PhysicsLab
use los parámetros por omisión (no serán especificados por ningún
html). Su grupo puede optar a 10 puntos de extras si en lugar de usar
aquellos por omisión, usted estudia la clase Properties, y define los
mismos nombre de parámetros indicados antes en un archivo
PhysicsLab.ini.
Resultados Esperados de su Grupo
Entregue todo lo indicado en Normas de Entrega de Tareas.
Incluya un archivo PhysicsLab.html que permita correr su applet.
Debe preparar un archivo PhysicsLab.jar que incluya todo lo requerido para la ejecución de su applet.
La aplicación debe correr usando:
$make run
o bien usando:
$ java -jar PhysicsLab.jar
(Nota por una pregunta el 16.06, agregué la extensión que falta en PhysicsLab.jar)
Su documentación automática con javadoc debe ser generable con:
$ make doc
(OJO no incluya las páginas html generadas por javadoc, éstas serán generadas por este comando cuando el ayudante las revise)
En su archivo de documentación (pdf o html) incorpore dos casos de usos de la aplicación, sus correspondientes diagramas UML y ponga dos tarjetas CRC.
Ayudas
Será provista según surjan consultas de parte de ustedes.
Con fecha 12 de junio se cambió la clase Bloque.java con una mejor implementación de la simulación
que no acumula energía, al menos así se aprecia luego de un buen rato
corriendo.
Cuando comenté al profesor Glaría la nueva forma para calcular la simulación, me mostró una forma general para calcular la integral a partir de los valores previos. Su explicación explica el desarrollo hecho antes.
(Cabe destacar
que al dejar el programa corriendo por mucho
rato, el sistema lleva la CPU a 100% de utilización. Sólo observo esto
ahora y no sé a qué se debe aún. Si su tarea luego de más de 10
minutos muestra el mismo problema no será motivo de penalización. Si
usted reproduce este problema y luego lo resuelve y explica en su
documentación, gana 10 puntos extras en su tarea.) 16.06.10: Ya no aplica este
adicional pues resolví le problema. Su explicación y solución está en
Simulator.java.