Programación Orientada a Objetos. Curso 08/09
Práctica 3. Interfaces gráficas
Duración: Semanas del 30/03, 13/04, 20/04, y 27/04 (para detalles ver el calendario de prácticas)
Entrega y examen: Semana del 04 de Mayo (para ver la fecha de cada grupo ver el calendario)
Objetivo
Tras haber desarrollado en la segunda práctica el core del sistema de gestión de expedientes con una interfaz de usuario en modo texto, el objetivo de la tercera práctica es que el alumno desarrolle una interfaz gráfica en SWING amigable para el usuario de la aplicación
apoyándose en los módulos funcionales ya desarrollados. Si el trabajo realizado en la práctica anterior es lo suficientemente modular, en este práctica no debería modificarse el core de la aplicación.
Como base del desarrollo se entrega un conjunto de clases que crean la ventana principal de la aplicación e incluyen ejemplos de los mecanismos de eventos utilizados por SWING para enlazar las componentes visuales con la lógica de negocio.
La calificación de la práctica más que en el aspecto meramente estético de la aplicación se basará en la sencillez de uso y amigabilidad con el usuario (unificación de aspectos visuales, mensajes de feedback...).
Pruebas
No se prevé entregar ningún conjunto de test durante el desarrollo de esta práctica. No obstante, se valorará la entrega de testers de los distintos módulos funcionales.
Entrega
Las prácticas se deben entregar antes de la fecha de corrección
indicada al comienzo del enunciado, teniendo en cuenta las horas límite
de entrega mencionadas en las normas
de la asignatura. En general, el grupo del lunes tiene hasta las 12 del
mediodía del mismo lunes, y
todos los demás grupos tienen hasta
las 12 de la noche del día anterior a la fecha de
corrección.
De nuevo, siguiendo las normas de
la asignatura, el fichero .zip
a entregar debe incluir:
- un leeme.txt que
describa los ficheros incluidos en el .zip
- el build.xml usado para
compilar y ejecutar la práctica (en general, con el que se entrega con
el enunciado vale).
- una memoria.{pdf,
rtf, odt}. En este caso, la memoria
puede ser bastante breve, y basta con que expliquen las
ideas principales de la implementación de cada una de las funciones
incompletas. También se
debe decir si se ha conseguido pasar todos los casos de prueba, o si
alguno ha dado fallos. En caso de que se produzcan fallos, se debe
explicar cómo se ha intentado resolverlos. Esto sólo vale para
esta primera práctica: en la P2, P3 y P4, las memorias deberán seguir otros criterios.
- los ficheros de prueba
usados para verificar que la práctica funciona. Sobre todo, si se han
modificado para probar casos específicos.
- y los fuentes, en un
directorio llamado "src" con la estructura de directorios necesaria
para que, descomprimiendo el .zip
entregado y escribiendo "ant run" (es decir, ejecutando el "build.xml" includido en el .zip), la práctica se compile y
ejecute correctamente los casos de prueba.
NOTA:
Las entregas que no cumplan los requisitos enumerados en las normas
recibirán una penalización de 0.5 puntos.
Apéndice: Sobre estas prácticas
Este apartado contiene una serie de reflexiones sobre el enfoque de
estas prácticas, porqué se hacen así, y qué se va a pedir en las
siguientes prácticas.
Código en los enunciados
Las prácticas de POO se diferencian de otras en que, junto con cada
enunciado, se entrega bastante código. Esto se hace por los siguientes
motivos:
- Java no es C. Se espera
que todos los alumnos tengan un nivel bastante alto de programación en
C. La sintaxis de Java es muy similar a la de C, y si las primeras
prácticas pidiesen escribir un programa desde cero, el resultado no
tendría nada de orientación a objetos. Si se parte de un programa con
diseño OO, se evita el riesgo de que todo el programa esté compuesto de
métodos "public static".
- Convenciones en Java. hay
mucha más uniformidad en cuanto a estilo de programación en Java que en
otros lenguajes. Hay convenciones de nombrado de clases y de variables,
convenciones sobre los nombres dados a métodos, de formato de
comentarios de cabecera, de indentado, de organización en paquetes,
etcétera. Es mejor partir de un ejemplo en el que todo está escrito
siguiendo estas convenciones que intentar que se apliquen desde cero,
son muchas.
- Uso de librerías.
Programar en Java tiene un gran componente de saber usar código
existente: las librerías disponibles son uno de los puntos fuertes de
Java. Esto es menos cierto en C, donde la mayor parte de las librerías
son externas (y por tanto, no tan estándares). Es fundamental perder el
miedo a las librerías y saber manejar su documentación desde un primer
momento.
- OO y Patrones. La
orientación a objetos promueve la reutilización no sólo de código, sino
también de estrategias de diseño ("patrones de diseño"). Esto se da en
mucho mayor medida que en lenguajes menos abstractos, tipo C. En el
código que se entrega se hace uso de varios patrones establecidos. La
idea es que, desarrollando y extendiendo sobre un buen diseño, se
mejora la capacidad de entender y crear buenos diseños.
(C) 2008-2009 Escuela Politécnica Superior, UAM