Diseño y Programación Orientados a Objetos
1er. Sem 2007
Tarea 2: Dibujando una Red Eléctrica Simple


Esta tarea tiene por objeto:
  1. Ejercitar la creación de programas conducidos por eventos.
  2. Ejercitar la creación de interfaces gráfica de usuario.
  3. Ejercitar herencia, interfaces, ligado dinámico, y creación de menús.
  4. Generar programas que sigan cierto estándar en su formato o estilo.
Esta tarea es la segunda de una secuencia donde paso a paso iremos aplicando el patrón de diseño Modelo-Vista-Control. Este modelo sugiere organizar en forma separada: los objetos que almacenan información (son el Modelo), las vistas que corresponde a la representación visual de esos datos (puede haber varias vistas, en esta tarea corresponde a lo dibujado en el JPanel), y el control que son las formas cómo los datos cambian (en este caso vía el menú). En esta tarea las formas que usted manejará son tres: fuente de voltaje continuo, resistencia, y punto de tierra. Con ellas usted dibujará un circuito simple.

La tarea será revisada desde consola; es decir se requiere que usted cree un archivo Makefile para que el ayudante compile su trabajo sólo ejecutando la sentencia
$ make
Para ejecutar su programa el ayudante ejecutará
$ make run

Descripción General:
En esta tarea se le pide que usted implemente las clases FuenteCC, Resistencia, y GND. La fuente de voltaje continuo posee su voltaje como uno de sus atributos y la resistencia su valor.
Su aplicación posee una interfaz gráfica similar a ésta. El primer menú de la barra de menú llamado crear contiene tres ítemes. El primero permite incorporar una fuente a su circuito, el segundo permite incorporar una una resistencia, y el tercero un punto de tierra.
Cuando usted selecciona un componente a crear, una ventana de diálogo le consultará por su atributo si corresponde y luego se mostrará (su vista o representación visible) en la posición superior izquierda se la zona de dibujo.

La barra de menú de la aplicación posee un segundo y último menú (Editar) para editar las componentes creadas. Este menú tiene dos itemes. El primero es trasladar y el segundo rotar. Si el usuario selecciona trasladar, él o ella podrá mover el mouse sobre el circuito y cuando el cursor esté sobre una componente ésta cambiará de color y usted presionando el mouse podrá arrastrarla a la posición deseada. Cuando uno de los terminales de la componente en movimiento esté cerca del algún terminal de otra componente, la componente en movimiento se ubicará de modo que ambos terminales coincidan (ya no estará bajo el mouse y simulará una conexión). Si el usuario suelta el mouse, la componente cambia a su color normal. El usuario puede mover su mouse y mover otra componente si lo desea, pues permanecerá en este modo hasta que seleccione otra ítem de algún menú.
Si optamos por rotar. al mover el mouse sobre una componente ésta también cambiará de color. Una vez seleccionada, con cada click podremos rotarla en 90 grados. Este modo se mantiene hasta que seleccionemos otro ítem de algún menú.   

Sobre Documentación: En la documentación de esta tarea, no es necesario que usted haga una descripción en alto nivel de los algoritmos usados, pero sí adjunte un diagrama de clases (las clases principales y la relación entre ellas como aquí). En esta tarea la verificación de estilo se debe realizar. Es voluntario el entregar su código documentado de manera que se pueda generar la documentación con el utilitario javadoc. El archivo Readme puede ser entregado en archivos de texto; sin embargo se estimula a quienes puedan entregarlo en formato html poniendo las ligas a los códigos fuentes, diagrama de clases, etc.