Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract...
Transcript of Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract...
![Page 1: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/1.jpg)
Análisis y diseño de software ditUPM
Trenes
José A. Mañashttp://jungla.dit.upm.es/~pepe/doc/adsw/index.html
21.3.2017
![Page 2: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/2.jpg)
objetivos
• terreno
– tramos de vías en una cuadrícula
– cada tramo tiene hasta 4 enlaces: N, S, E, W
• trenes
• semáforos
• monitores
• ejemplos
trenes 2
![Page 3: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/3.jpg)
String[] mapa = {""," - se h h ws -"," - v - - v -"," - ne h h nw -",""
};Terreno terreno = new Terreno(mapa);terreno.setVisible();
ejemplo
trenes 3
![Page 4: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/4.jpg)
tramos sencillos
trenes 4
h
he
v
ve
c+
enne
esse
wnnw
wssw
![Page 5: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/5.jpg)
curvas identificadas por sus enlaces
trenes 5
2 formas de nombrarlo:• en• ne
![Page 6: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/6.jpg)
tramos compuestos
trenes 6
2 formas de nombrarlo:• es_n• se_n
curva sur-este con enlace al norte
![Page 7: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/7.jpg)
tramos compuestos
trenes 7
es_nse_n
es_wsw_w
en_sne_s
en_wne_w
ws_nsw_n
ws_esw_e
wn_snw_s
wn_enw_e
![Page 8: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/8.jpg)
trenes
• se pueden crear y posicionar por programa
trenes 8
final Tramo estacion1 = terreno.get(2, 3);final Tramo estacion2 = terreno.get(3, 3);
Semaphore semaforo = new Semaphore(1);terreno.ponSemaforoEntrada(estacion1, W, semaforo);terreno.ponSemaforoSalida(estacion2, E, semaforo);
Tren tren1 = new Tren("Talgo", Color.RED);tren1.setVelocidad(0.4);terreno.ponTren(1, 2, S, tren1);
Tren tren2 = new Tren("Expreso", Color.BLUE);tren2.setVelocidad(0.1);terreno.ponTren(4, 2, N, tren2);
![Page 9: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/9.jpg)
trenes
• se pueden crear y controlar interactivamente
trenes 9
![Page 10: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/10.jpg)
interactividad
• tramos
– haga clic para cambiar agujas
• trenes
– arrancar y parar
– cambiar la velocidad (siempre v ≥ 0)
– cambiar el color
– quitar el tren
• ojo con los semáforos y monitores
trenes 10
![Page 11: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/11.jpg)
semáforos
• Se instalan en los enlaces de los tramos
• Aparecen pintados
– según se entra a la derecha
– verde si están abiertos
– rojo si están cerrados
trenes 11
Terreno terreno = new Terreno(mapa);Tramo estacion1 = terreno.get(2, 3);Tramo estacion2 = terreno.get(3, 3);
Semaphore semaforo = new Semaphore(1);terreno.ponSemaforoEntrada(estacion1, W, semaforo);terreno.ponSemaforoSalida(estacion2, E, semaforo);
![Page 12: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/12.jpg)
semáforos
• Dinámica
– los crea el usuario con los permisos pertinentes
Semaphore semaforo = new Semaphore(1);
– cuando entra un tren, adquiere 1 permiso
semaforo.acquire();
– cuando sale un tren, devuelve 1 permiso
semaforo.release();
trenes 12
![Page 13: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/13.jpg)
monitores
trenes 13
public abstract class Monitor {
/*** Metodo para el usuario. Se llama cuando un tren quiere entrar a un tramo monitorizado.* El usuario debe programar lo que haya que hacer.** @param tag pista para el monitor.* @param tren tren que entra.* @param tramo tramo al que va a entrar.* @param entrada enlace por el que entra.*/public abstract void entro(int tag, Tren tren, Tramo tramo, Enlace entrada);
...
![Page 14: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/14.jpg)
monitores
trenes 14
...
/*** Metodo para el usuario. Se llama cuando un tren sale de un tramo monitorizado.* El usuario debe programar lo que haya que hacer.** @param tag pista para el monitor.* @param tren tren que sale.* @param tramo tramo del que va a salir.* @param salida enlace por el que sale.*/public abstract void salgo(int tag, Tren tren, Tramo tramo, Enlace salida);
}
![Page 15: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/15.jpg)
monitores
• Se instalan en el terreno– monitorizando enlaces
– se ponen en un tramo / enlace
– se marcan con un tag que se le pasará al método de tratamiento
trenes 15
Monitor tunel = new MonitorTunel();terreno.ponMonitorEntrada(cambio23, Enlace.N, tunel, 1);terreno.ponMonitorEntrada(cambio23, Enlace.W, tunel, 1);terreno.ponMonitorSalida(cambio43, Enlace.N, tunel, 1);terreno.ponMonitorSalida(cambio43, Enlace.E, tunel, 1);
terreno.ponMonitorEntrada(cambio43, Enlace.N, tunel, 2);terreno.ponMonitorEntrada(cambio43, Enlace.E, tunel, 2);terreno.ponMonitorSalida(cambio23, Enlace.N, tunel, 2);terreno.ponMonitorSalida(cambio23, Enlace.W, tunel, 2);
![Page 16: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/16.jpg)
escenario 1
• trenes
• estaciones
trenes 16
![Page 17: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/17.jpg)
escenario 2• tramos
– simples
– cambios
trenes 17
![Page 18: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/18.jpg)
escenario 3
• trenes
• cruces
trenes 18
![Page 19: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/19.jpg)
escenario 4
• trenes
• monitores(no se pintan)
trenes 19
![Page 20: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/20.jpg)
escenario 5
• trenes
• semáforos
trenes 20
![Page 21: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/21.jpg)
escenario 6
• trenes
• semáforos
trenes 21
![Page 22: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/22.jpg)
ejercicio 1
• escenario: un túnel con 2 entradas
– si tu pasas, yo espero
concurrencia /wait 22
![Page 23: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/23.jpg)
ejercicio 1
concurrencia /wait 23
Tramo agujas01
Tramo agujas02
![Page 24: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/24.jpg)
Ejercicio 1
• Programar MonitorTunel
trenes 24
public class MonitorTunelextends Monitor {
// la thread se detiene hasta que pueda entrarpublic void entro(int tag, Tren tren, Tramo tramo, Enlace entrada) {}
// la thread salepublic void salgo(int tag, Tren tren, Tramo tramo, Enlace salida) {}
}
![Page 25: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/25.jpg)
ejercicio 1.1
• características
– sólo pasa un tren en cada momento
concurrencia /wait 25
FÁCIL
![Page 26: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/26.jpg)
ejercicio 1.2
• características
– sólo pasa un tren en cada momento
– reparte equitativamente los derechos de paso
– o sea, si sale un tren por E1, tiene preferencia para entrar un tren esperando en E1
• equitativo (fair)
concurrencia /wait 26
MEDIO
![Page 27: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/27.jpg)
ejercicio 1.3
• características
– pueden pasar varios trenes en la misma dirección
concurrencia /wait 27
MEDIO
![Page 28: Presentación de PowerPointpepe/doc/adsw/tema2/trenes/trenes.pdfmonitores trenes 13 public abstract class Monitor {/** * Metodo para el usuario. Se llama cuando un tren quiere entrar](https://reader034.fdocuments.net/reader034/viewer/2022051606/602a35f3532a9355fb2d79f0/html5/thumbnails/28.jpg)
ejercicio 1.4
• características
– pueden pasar varios trenes en la misma dirección
– pero si hay trenes esperando en dirección contraria, tienen prioridad
• equitativo (fair)
concurrencia /wait 28
MEDIO