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.