Diseño y Programación Orientados a Objetos
1er. Sem 2005
Tarea 2: Editor de Figuras Simples


En esta tarea usted va a experimentar los conceptos de herencia, ligado dinámico, interfaces, clases internas, e interfaces gráficas.

Se pide desarrollar una aplicación Java para la creación de figuras simples.
Sintaxis: java Editor
(Sintaxis: java editor)
Editor muestra una interfaz gráfica con al menos las siguientes opciones:
a) Creación de figura simples : Círculos y Rectángulos
b) Operaciones que permiten escalar la figura respecto a un punto, rotar toda la figura respecto a un punto en un ángulo dado, y  trasladar la figura a un punto dado.


Si usted quiere mejorar esta distribución/presentación de los botones, sientase libre de hacerlo

Para incorporar un círculo a su figura, el usuario debe presionar el botón círculo para definir el modo de dibujo. Al presionar el mouse en la zona de dibujo se define el punto central del círculo, luego arrastrando el mouse (movimiento con botón presionado) el usuario define el radio del círculo. Al soltar el botón el círculo queda definido.
Para incorporar un rectángulo, se procede en forma análoga. Se selecciona modo de dibujo rectángulo, luego se presiona el  mouse en la zona de dibujo. Manteniendo presionado el botón del  mouse el rectángulo crece hasta que el usuario suelta el botón.
En los dos casos, se pide que la figura se redibuje en cada posición del mouse presionado. Así la figura se actualizará y el usuario pude decidir cuándo soltar el botón del mouse para fijar la figura que desea.

En respuesta a escalar, el siguiente punto marcado con el cursor en la zona de dibujo definirá el punto centro sobre el cual se efectuará el escalamiento. Luego un segundo punto y manteniendo un botón presionado permitirá definir el factor de escalamiento. Si me acerco al punto central (primer punto) corresponde a una reducción, si me alejo a una ampliación.
En respuesta a rotar, en forma análoga un primer unto indica el lugar sobre el cual se rotará. Un segundo punto indica el ángulo a rotar. Manteniendo el botón presionado la segunda ocasión, el ángulo en que se mueva el cursor define el ángulo de rotación.
En respuesta a trasladar el usuario presiona un botón sobre la figura y manteniendo el mouse presionado puede trasladar la figura completa.
En los tres casos, se pide que la figura se redibuje en cada posición del mouse presionado. Así la figura se actualizará y el usuario pude decidir cuándo soltar el botón del mouse.

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 (todas lus clases y la relación entre ellas). En esta tarea la verificación de estilo es debe realizarse. Usted debe entregar su código documentado de manera que se pueda generar la documentación con el utilitario javadoc. La documentación puede ser entregada en archivos de texto; sin embargo se estimula a quienes puedan entregarla en formato html.

Nota: ver jfig, un sistema completo del tipo pedido aquí. Esta tarea es similar a la primera tarea pedida el año pasado. Es muy posible que su clase vector pueda ser usada en la construcción de las clases Círculo y  Rectángulo.