/**
* Gonzalo Ojeda Figuera
* 9821018 - 0
* Diseño y Programación Orientada a Objetos
* Primer Semestre 2004
*/
Para ver la documentación generada con la herramienta javadoc, ir aca
Ver archivo readme
Para realizar esta tarea se consideraron los siguientes aspectos:
- Se usó como base la tarea anterior, realizandose a ella los cambios mínimos necesarios para la nueva implementación.
- En la resolución de la tarea, se trabaja según que acción dicen cada uno de los 3 botones de figura, o los 3 botones de acción, los cuales son excluyentes entre sí, ahora bien, según que acción se esté realizando corresponde a cómo se atenderán los eventos del mouse como clicks o dragg (arrastrar el mouse con el botón presionado). Cuando se crean figuas, cada una se va agregando a un arreglo de lago variable, y el objeto que se inserta es de tipo Shape, para poder trabajar con las otras clases con el mismo objeto. Para pintar la pantalla, se dibujan todas las figuras contenidas en este arreglo, con algún efecto como rotación, traslación o zoom en caso de así ser requerido.
Sin embargo, en este punto se presenta un "posible" error o algo incompleto en la presente solución de la tarea, esto es que al aplicar las rotaciones, traslaciones y zoom sobre el objeto Graphics2D y no sobre las figuras en si, los cambios no son permanentes, entonces si se dibuja un nuevo objeto las figuras vuelven a su posición original, desapareciendo los efectos de la rotación, traslación o zoom. Esto se debe principalmente a que no se encontró como guardar los cambios encontrados en el ambiente gráfico en el arreglo de figuras.
Otro error o problema encontrado se refiere al uso de la herramienta de chequeo de estilos, esto es por ejemplo sobre el largo de las funciones, pues por un lado se pide documentar bien el código pero por otro lado
las funciones muy largas son penalizadas, por eso se dejaron funciones largas en favor de un código comentado.
Otro detalle de la solución presentada es que a pesar que da la opción de escoger el directorio donde guaradar el archivo, sólo es posible hacerlo en el actual directorio de trabajo.
Finalmente al guardar el archivo en formato .fig, no hay ningún problema al abrirlo con el JFig, sin embargo al usar el Xfig tira un warning sobre el escalamiento usado (el valor original de 1200 fue cambiado por 60 para poder ver las figuras de un tamaño mas grande).
A Continuación se muestra el diagrama de relación entre las clases y sus dependencias:
Consideraciones de Funcionamiento:
- Rotar:
El Rotar funciona con dos clicks del mouse, con el primero se obtiene el "centro" sobre el cual se aplicará la rotación. Con el segundo se obtiene al ir moviendo el mouse con el botón apretado el ángulo de rotación, y a medida que se mueve el mouse, también se moverá el dibujo completo mientras no se suelte el botón del mouse.
- Escalar:
El Escalar funciona también con dos clicks del mouse, en el primero se obtiene la referencia a utilizar para calcular el escalamiento, con el segundo se va calculando el "zoom" que se hará, haciendo una relación entre la distancia original entre los puntos y la distancia actual, de modo que si el segundo punto se acerca al primero (la distancia disminuye) se aleja el "zoom" y en caso contrario se agranda la figura. Estas operaciones se realizan con respecto al punto central.
- Trasladar:
El Trasladar funciona con solamente un punto, el cual se obtiene al hacer click del mouse y luego al mover el mouse se traslada la figura completa a la posición donde se movió el mouse, esto hasta q se suelte el botón del mouse.