Diseño y Programación Orientados a Objetos
1er. Sem 2008
Tarea 3: Simulación de Estanques


Recomendación: Lea detenidamente la tarea, si algo no lo entiende consulte en clases, si es preciso se incorporarán aclaraciones al final.

Esta tarea tiene por objetivo que continúe ejercitando las destrezas de las tarea previas y cubra los siguientes nuevos objetivos:
  1. A través de la ejercitación comprenda la programación conducida por eventos.
  2. Ejercitar el desarrollo de interfaces gráficas en Java
  3. Ejercitar el desarrollo de Applets
  4. Ejercitar la creación de archivos jar (java archive) y reproducción de sonidos.
Contexto de la tarea
   A través de esta tarea usted desarrollará un applet para simular el proceso de llenado y vaciado de dos estanques donde se desea controlar el nivel de uno de ellos para mantenerlo en un nivel fijo. Como punto de partida usted dispone de un sistema que hace la mayor parte de la tarea, al cual usted deberá agregar algunas nuevas características.

Descripción General

   Se cuenta con dos estanques idénticos conectados en cascada como se muestra en la figura adjunta.
Sistema Inicial

El código para tal resultado está disponible, éste incluye su versión applet.
A partir del código entregado, u otra versión del mismo según usted desee, usted deberá (en un nuevo ciclo de desarrollo, siguiendo una metodología de desarrollo incremental iterativo) incorporar tres nuevos requerimientos.
Primero se pide crear la clase gráfico de la cual usted pondrá dos instancias en la interfaz de usuario. Un gráfico mostrará el nivel de primer estanque y la posición de la válvula en función del tiempo, y el otro pondrá el nivel del estanque, la válvula y nivel de referencia del segundo estanque en función del tiempo.
Segundo, se pide que organice mejor los  "JSpinners" de la interfaz de modo que se pueda ver mejor aquellos relacionados con cada estanque y aquellos asociados al controlador.
Finalmente, usted deberá detectar la condición de vaciado del primer estanque. Cuando se produzca, aparecerá en forma intermitente una trompeta en la interfaz y se emitirá un sonido repetidamente (en sincronía con la aparición de la trompeta). Use dos segundos tres segundo entre apariciones.

Cumpliendo con lo pedido previamente, usted es libre de agregar otras mejoras para mejor apreciar el fenómeno.

Su entrega deberá incluir lo de costumbre: documentación completa de sus nuevas clases y de todas las modificaciones  o agregados hechos al código. La documentación de las clases ya entregadas es voluntaria. No olvide preparar un makefile para compilar el código, correr el programa como aplicación y crear el archivo .jar. Su programa debe funcionar como aplicación y como applet.