práctica dirigida de programación concurrente en java


Hoy hemos tenido por fin el primer contacto directo con la programación concurrente en el lenguaje java en el laboratorio con la realización parcial de una práctica. La práctica dirigida consiste en la transformación de la versión secuencial de una aplicación realizada en Java en su versión concurrente (i.e realizada con thtreads), siguiendo las técnicas que se nos han explicado la semana pasada.

Hoy hemos visto y completado la versión secuencial y se nos ha encargado completar la versión concurrente con Threads para ponerla en común el viernes. La aplicación java consiste en la simulación de una red ferroviaria.

En primer lugar se nos ha explicado la versión secuencial de la aplicación sobre la que vamos a trabajar. El documento que se nos entregó contiene un diagrama de clases UML, la descripción en lenguaje natural de cada una de las clases y dos diagramas de estado con el comportamiento de dos clases importantes: Túnel y Tren.

La aplicación realiza y presenta de forma gráfica la simulación de una red ferroviaria. Esta red consta de dos secciones o tramos llamados rojo y azul, que comparten una sección denominada túnel. Cada sección dispone de un centro de regulación del cual parten un número determinado de trenes hasta un máximo de cinco por tramo, representados por puntos que se van moviendo a lo largo de los tramos. A la entrada y salida del túnel se dispone de sendos aparcamientos (uno para cada grupo de trenes de cada tramo), donde los trenes esperan a que el recurso túnel este libre para poder entrar en el mismo. Se trata de que el sistema se simule durante un tiempo, comprobando que no existen problemas de bloqueo en el túnel (que es un recurso compartido por los dos tramos)

Se nos pasó el código fuente incompleto de la versión secuencial de la aplicación como un proyecto de Eclipse, que cargamos en el IDE:

File -> Import (Select: General -> existing Projects into Workspace -> Next: -> Select Archive File: [project zip file])

Tras importar el proyecto en Eclipse nos dimos cuenta que el entorno os reportaba un error en una librería externa incluida en el mismo: la librería gráfica SWT (GUI) Para remediar este problema accedimos a la opción build path del menú emergente al hacer click con el botón derecho del ratón sobre el nodo raíz del proyecto sito en la ventana de exploración del proyecto. Ahí eliminamos la entrada que se refería a la librería incorrecta y añadimos la correcta correspondiente a la versión de nuestro entorno de desarrollo, que estaba situada en el directorio de plugins del directorio de instalación del eclipse. Esta es la secuencia de acceso:

Project Window -> Project Root (mouse right click) -> Build Path -> Configure Build Path … -> Libraries -> Remove [swt win32] -> Add External JARS … -> $(ECLIPSE_PATH)/plugins -> …

En mi caso, al tener instalada la herramienta de desarrollo en Linux con escritorio GNOME, la librería del interfaz gráfico es:

org.eclipse.swt.gtk.linux.x86_3.4.0.v3448.jar

Tras eliminar los errores de inclusión de librerías me aparecieron 10 warnings distribuidos entre el código fuente java. La razón de los mismos es que se accedía a los métodos y variables estáticas de algunas clases con el identificador de un objeto de la misma en lugar de hacerlo con el identificador de la clase. Tras subsanar ese problema se dejó vacía la ventana de problemas.

La parte que faltaba por completar era la implementación del diagrama de estados de la clase Tren (método actualiza()) La completamos siguiendo las indicaciones de la profesora entre todos.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s