Diseño
y Programación Orientados a Objetos
1er. Sem 2007
Tarea 2: Dibujando una Red Eléctrica Simple
Esta tarea tiene por objeto:
- Ejercitar la creación de programas conducidos por eventos.
- Ejercitar la creación de interfaces gráfica de
usuario.
- Ejercitar herencia, interfaces, ligado dinámico, y
creación de menús.
- 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.