Actualizado el 24 de Octubre del 2020 (Publicado el 14 de Enero del 2017)
1.242 visualizaciones desde el 14 de Enero del 2017
419,8 KB
11 paginas
Creado hace 14a (15/10/2010)
Especificaci´on de Red Ferroviaria
Miguel Teller´ıa, Laura Barros, J.M. Drake
13 Oct 2010
Resumen
Este documento describe la aplicaci´on de red ferroviaria en detalle, los criterios de dise˜no y
como se han dise˜nado las clases.
´Indice
1. Aplicaci´on RedFerroviaria
2. Dise˜no de la aplicaci´on
2.1. Criterios de dise˜no estructural
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Criterios de dise˜no din´amicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
3. Descripci´on de las clases
.
3.1. Clase RedFerroviaria .
3.2. Class TramoFerroviario .
3.3. Clase Tren .
.
3.4. Class CentroRegulacion .
.
3.5. Class Tunel
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
1
2
2
4
4
4
5
6
8
8
4. Ejemplo de implementacion secuencial: RedFerroviariaSeq
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1. Clase PruebaSecuencial .
.
.
.
1. Aplicaci´on RedFerroviaria
La red ferroviaria se compone de un circuito con dos tramos ferroviarios independientes y cerrados que
son recorridos por un conjunto de trenes. En cada tramo los trenes circulan en la misma direcci´on y a
una velocidad que puede ser establecida para cada tren.
Cada tramo ferroviario tiene un centro de regulaci´on, en el que los trenes se aparcan temporalmente a
fin de regular su circulaci´on para que su tr´afico sea uniforme. Pueden utilizarse diferentes estrategias de
regulaci´on de los tiempos de salida. En la versi´on base corresponde a un tiempo fijo establecido en el
programa (por ejemplo, tiempo que el tren m´as lento tarda en recorrerle circuito estando s´olo, partido
por el n´umero de trenes en el tramo).
Page 1 of 11
Page 1 of 11
Page 1 of 11
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
Figura 1: Esquema de la red ferroviaria
La red ferroviaria contiene un t´unel que es compartido por los trenes de ambos tramos ferroviarios. Los
trenes de cada tramo ferroviario pasan por el t´unel en sentido contrario, por lo que mientras que un
tren de un tramo ferroviario est´e atravesando el t´unel, los trenes que lleguen del otro tramo ferroviario
deben estacionarse en el acceso del t´unel hasta que no haya trenes circulando en sentido contrario. Sin
embargo dos trenes que circulen en el mismo sentido, si pueden circular simult´aneamente por el t´unel.
Se pueden establecer diferentes pol´ıticas de gesti´on del t´unel. En la versi´on b´asica, se utiliza una pol´ıtica
que maximiza el uso del t´unel (m´aximo throughput), se permite que los trenes que circulen en la misma
direcci´on que el que est´an circulando por ´el, puedan acceder con independencia de que se haya esperando
trenes en el otro extremo del t´unel.
La red ferroviaria representa la infraestructura de se˜nalizaci´on, y de ella, los trenes pueden obtener
informaci´on sobre su situaci´on respecto de los elementos de la v´ıa, del tiempo, y enviar a los recursos
aviso de su situaci´on y estado.
2. Dise˜no de la aplicaci´on
Como se muestra en el diagrama de clases de la figura, la aplicaci´on se ha construido con cinco clases
que representan los principales tipos de objetos que intervienen en la aplicaci´on: RedFerroviaria,
TramoFerroviario, Tren, Tunel y CentroRegulaci´on.
2.1. Criterios de dise˜no estructural
Se ha establecido una estructura de contenedores de tipo ´arbol definido por las relaciones de
composici´on. La ra´ız es RedFerroviaria, el TramoFerroviario es un contendor intermedio, y las
clases Trenes, Tunel y CentroRegulaci´on son los elementos terminales u hojas.
Desde todos los elementos, se proporciona acceso a la clase ra´ız RedFerroviaria, y a partir de ella,
y haciendo uso de la estructura en ´arbol de los componentes se puede acceder a cualquier otro, sin
necesitar pasar todas los accesos a trav´es de los constructores.
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Page 2 of 11
Page 2 of 11
Page 2 of 11
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
Figura 2: Diagrama de clases
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Page 3 of 11
Page 3 of 11
Page 3 of 11
ProgramaPrincipal-TIEMPO_ACTUALIZACION_MS : = 100+TIEMPO_DE_EJECUCION_MS : = 50000L+main(in args : String[]) : voidTren-estado : EstadoTren-posicion : int-tramo : Tramos-terminado : boolean-velocidad : int+Tren(tramo : Tramos, laRed : RedFerroviaria, velocidad : int)+actualiza() : void+termina() : void-avanza()TramoFerroviario-posicionLibre : boolean-LONGITUD : int = 96+TramoFerroviario(laRed : RedFerroviaria, tramo : Tramos)+esPosicionLibre(posicion : int) : boolean+longitudTramo() : int+enTunel(posicion : int) : boolean+enCentroRegulacion(posicion : int) : boolean+getCentroRegulacion() : CentroRegulacionTunel-numCirculando : int-autorizadosRojos : boolean-rojosEstacionados : int-azulesEstacionados : int+Tunel(laRed : RedFerroviaria)+salgo() : void+estaciono(tramo : Tramos) : void+autorizadoEntrar(tramo : Tramos) : bool+entro(tramo : Tramos) : voidCentroRegulacionnumTrenes : intproximaPartida : intCentroRegulacion(laRed : RedFerroviaria, tramo : Tramos)entro(tiempoViaje : int) : voidsalgo() : voidpermisoSalida() : boolean<<enum>>EstadoTrenEN_CENTRO_REGULACIONHACIA_TUNELEN_ACCESO_TUNELEN_TUNELHACIA_CENTRO_REGULACION<<enum>>TramosTRAMO_ROJOTRAMO_AZULRedFerroviaria-NUM_MAX_TRENES_POR_TRAMO : = 5+RedFerroviaria()+numMaxTrenesPorTramo() : int+getTunel() : Tunel+getTramoFerroviario(tramo : Tramos) : TramoFerroviario+situaTren(tramo : TramoFerroviario, posicion : int) : void+borraTren(tramo : Tramos, posicion : int) : void+situaTunel(numAzules : int, numRojos : int) : void+situaCentroRegulacion(tramo : Tramos, numTrenes : int) : voidlaRed1laRed1elTunel1tramoAzul1tramoRojo1laRed1listaTrenesRojo1..*listaTrenAzul1..*elCentroRegulacion1laRed1laRed1Se ha buscado que no haya redundancia de informaci´on. Cada dato s´olo es mantenido en el objeto
que lo genera o en el que por su naturaleza es responsable de ´el. Si un objeto requiere un dato
de forma repetida, lo puede almacenar localmente de forma privada y es responsable de que sea
coherente con el valor oficial. Para evitar transmitir fallos de coherencia, todos deben buscar la
informaci´on en el objeto responsable de ella.
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
2 Dise˜no de la aplicaci´on
2.2. Criterios de dise˜no din´amicos
La aplicaci´on es de naturaleza t´ıpicamente concurrente. Los trenes avanzan interaccionando con los
elementos que encuentran, y decidiendo continuar o parar seg´un el estado del elemento (Tunel o Cen-
troRegulaci´on) que encuentra.
3. Descripci´on de las clases
3.1. Clase RedFerroviaria
Representa a la red ferroviaria completa. Es el contenedor ra´ız de los restantes elementos, y a trav´es de
ella se puede localizar cualquier elemento. Constituye la interfaz gr´afica de usuario (GUI) en el que se
muestran todos que constituyen la aplicaci´on.
Atributos:
(cid:28)constant(cid:29) NUM MAX TRENES EN TRAMO = 5 ⇒ N´umero de trenes que se crean para que
circulen por el tramo.
Asociaciones
tramoAzul:TramoFerroviario ⇒ Contiene la instancia del tramo Azul definido en la red fe-
rrroviaria.
tramoRojo:TramoFerroviario ⇒ Contiene la instancia del tramo Rojo definido en la red fe-
rrroviaria.
elTunel:Tunel ⇒ Contiene la instancia del t´unel de la red ferroviaria.
Constructor
RedFerroviaria() ⇒ Constructor ra´ız de la red ferroviaria. Invoca recursivamente todos los
dem´as constructores.
M´etodos
numMaxTrenesEnTramo() ⇒ Retorna el n´umero m´aximo de trenes que pueden circular en el
tramo. Est´a impuesto por la GUI y refleja la dimensi´on finita de los aparcamientos en ´el.
getTunel():Tunel ⇒ Retorna el acceso al objeto t´unel de la red ferroviaria.
getTramoFerroviario(tramo:Tramos): TramoFerroviario ⇒ Retorna el acceso al objeto
tramo ferroviario que es designado con el par´ametro.
situaTren(tramo:Tramo, posicion:int) ⇒ Visualiza en la maqueta de la red ferroviaria
un tren en la posici´on que se pasa como par´ametro.
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Especificaci´on de Red Ferroviaria
Page 4 of 11
Page 4 of 11
Page 4 of 11
3 Descripci´on de las clases
3 Descripci´on de las clases
3 Descripci´on de las clases
borraTren(tramo:Tramo, posicion:int) ⇒ Elimina de la maqueta de la red ferroviaria el
tren situado en el tramo y posici´on que se pasan como par´ametros.
situaTunel(numAzul:int,numRojo:int) ⇒ Visualiza en el estacionamiento del tunel un
n´umero de trenes igual a los que se pasan como par´ametros.
situaCentroRegulacion(tramo:Tramo,numTrenes:int) ⇒ Visualiza en el estacionamien-
to del centro de regulaci´on del tramo que se indica, el n´umero de trenes que se pasa como par´ame-
tro.
3.2. Class TramoFerroviario
Representa un circuito que es seguido por un conjunto de trenes. Contiene un centro de regulaci´on que
controla su tr´afico y comparte un t´unel con otros tramos.
Atributos:
(cid:28)final(cid:29) LONGITUD:int=96 ⇒ Longitud en pasos del tramo ferroviario. Tambi´en representa la
posici´on del centro de regulaci´on en el tramo.
posicionLibre[] ⇒ Estado de cada posici´on de la red. Est´a libre si en ellas no est´a posicionado
ning´un tren. Los trenes ocupan una posici´on cuando visualizan su posici´on con situaTren() y
la dejan libre cuando la borran con borraTren().
tramo: Tramos ⇒ Identificador del tramo ferroviario que representa.
Asociaciones:
laRed: RedFerroviaria ⇒ Da acceso a la red ferroviaria y a sus servicios.
elCentroRegulaci´on:CentroRegulacion ⇒ Contiene la instancia del centro de regulaci´on
que regula e
Comentarios de: Especificación de Red Ferroviaria (0)
No hay comentarios