Programación Orientada a Objetos. Curso 2009/2010

Práctica 1. Introducción al lenguaje Java

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.

Objetivo

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.

Diagrama de clases

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).

Clases a implementar

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.

Pruebas y entrega

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.

Apéndice: Sobre estas prácticas

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.

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:

(C) 2009-2010 Escuela Politécnica Superior, UAM