Programación Orientada a Objetos. Curso
2009/2010
Calendario |
Lunes |
Martes |
Miércoles |
Jueves |
Viernes |
Observaciones |
Inicio |
22/2 |
23/2 |
24/2 |
25/2 |
19/2 |
|
Evaluación |
8/3 |
9/3 |
10/3 |
11/3 |
5/3 |
Entrega el día anterior.
El grupo del lunes 2 horas antes del comienzo de la clase |
Enlace al sitio de descarga de ArgoUML, herramienta para generar el diagrama de clases de la práctica.
El objetivo de la primera práctica es aprender la sintaxis
básica de
Java (asumiendo experiencia en C) y adquirir familiaridad
con el entorno de desarrollo NetBeans.
Las dos primeras prácticas del curso consistirán en
implementar un sistema de gestión de reserva de recursos por
internet. En la primera práctica el alumno deberá
analizar el problema que se
plantea y crear en java el esqueleto de sus primeras clases, sin
código en los métodos ni variables.
El sistema de reserva de recursos se ha de diseñar como un
sistema abstracto, y se crearán las clases necesarias para que
pueda ser usado como un sistema de venta de entradas que
permita a varios clientes acceder a un único servidor. En este
caso el recurso puede ser el derecho a una butaca para ver un
espectáculo un día y durante un tiempo concreto, si la
sesión es numerada; o el sistema podría proporcionar una
cantidad de entradas para un espectáculo, un día y
durante un tiempo determinado, en el caso de acceso a una sesión
no numerada. Por lo tanto, algunos recursos como las salas,
podrían poder dividirse en varios subrecursos (zonas/butacas en
sesiones numeradas), o ser usados simplemente con un número de
unidades disponibles (no numerado).
El servidor se encargará de ofrecer los recursos disponibles, información sobre los espectáculos, butacas libres en cada zona, etc. Además permitirá completar el pago de dichas entradas.
El cliente ofrecerá esta información al usuario y
permitirá reservar
las entradas necesarias en una primera fase, y en una segunda fase
pedir la información al usuario para realizar el pago y reservar
definitivamente las entradas una vez realizado correctamente.
Otro de los usuarios del sistema es el gestor del cine/teatro. Para
este usuario se ha de ofrecer una funcionalidad básica adaptada
a sus necesidades, para que pueda crear fácilmente cada sala,
con sus zonas, filas y butacas concretas, dando la menor
información posible. Por ejemplo se puede asumir que cada zona
de la sala es cuadrada, con un número de filas y las mismas
butacas en cada una. Además ha de poder crear las sesiones, por
ejemplo especificando un rango de fechas, un intervalo
(diario/semanal), la hora de la sesión y el título o
código correspondiente al espectáculo.
Para simplificar la aplicación no será necesario que
el gestor diseñe los recursos de forma interactiva, sino que
estos se podrán fijar directamente mediante código java
que ejecutará el servidor al iniciarse, sin interfaz de usuario,
aunque se han de diseñar las clases necesarias, para que el
método que especifica las salas/espectáculos requiera el
menor código posible.
Los mensajes en este sistema cliente/servidor son llamadas a métodos Java de los objetos en el servidor desde objetos en el cliente, será la máquina virtual la que realize toda la comunicación y transformaciones necesarias cuando detecte que el objeto destino del mensaje se encuentra en otra máquina virtual.
Para que el cliente pueda encontrar al servidor se supondrá que
tenemos un método que dada la IP y un nombre dado a nuestro
objeto servidor, podemos obtener una referencia a este, que
podrá ser utilizada en adelante como si se el objeto remoto
estuviese realmente en la misma máquina virtual que el cliente.
Se entregará un diagrama de clases con el diseño del sistema.
En esta primera práctica se puede suponer que la
aplicación se ejecuta en un mismo espacio de memoria, por lo
tanto no se considerarán los problemas propios de las
comunicaciones cliente/servidor, y el diagrama contendrá el
diseño del sistema como si fuese una sola aplicación. Sin
embargo, sí será necesario tener en cuenta que la
comunicación entre el cliente y servidor ha de ser sencilla y
eficaz, reduciendo al máximo el número de mensajes que se
intercambiarán y la complejidad o tamaño de los objetos
enviados/recibidos (argumentos/resultados de los métodos de los
objetos remotos).
En la primera práctica el alumno deberá crear las clases
diseñadas, exceptuando las relativas a interfaz de usuario.
Estas clases no contendrán código ni variables, pero
sí la documentación JavaDoc para poder generar una
memoria html que describa cada clase y método diseñado.
Las clases tendrán los métodos getters / setters
necesarios para las propiedades de cada clase. Para que puedan ser
compilados se puede incluir un retorno de algún valor trivial
(null, 0, "", etc.), en el caso de que el métodos que devuelven
algún valor.
También se ha de crear una clase MainServidor, con un
método main que ilustre con un ejemplo sencillo como
sería el código para crear los recursos.
Las prácticas se deben entregar antes de la fecha de
evaluación indicada al comienzo del enunciado, teniendo en
cuenta las horas límite
de entrega mencionadas en las normas
de la asignatura.
El fichero .zip a entregar debe incluir:
NOTA: Las entregas que no cumplan los requisitos enumerados en las normas recibirán una penalización de 0.5 puntos.
Este apartado contiene una serie de reflexiones sobre el enfoque de
estas prácticas, por qué se hacen así, y qué
se va a pedir en las
siguientes prácticas.
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: