Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-
-
Upload
agapito-mancha -
Category
Documents
-
view
230 -
download
0
Transcript of Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-
![Page 1: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/1.jpg)
Torneos VirtualesTorneos Virtuales2º Cuatrimestre 2009
Técnicas de Diseño 75.10
-Grupo D-
![Page 2: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/2.jpg)
ContenidoContenido
• Requerimientos del simulador• Información general del proyecto • Descripción de Arquitectura• Patrones utilizados• Posibilidades de extender la aplicación• Desafíos del proyecto• Mejoras para nuevas versiones• Demo / Muestra de código
![Page 3: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/3.jpg)
Requerimientos del Requerimientos del simuladorsimulador
• Jugadores actúan de acuerdo a su posición en cancha.
• Acciones: patear, marcar, avanzar, atajar.
• Diseño flexible para agregar nuevas jugadas y estrategias
• Jugadores en contacto Habilidades + factor de azar definen acciones.
• Detección de faltas y expulsiones
![Page 4: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/4.jpg)
Información general del proyectoInformación general del proyecto
Herramientas y tecnologías:
Datos sobre la base de código:
3950 Líneas de código (incluidos los tests unitarios) 393 commits de SVN Alojado en http://code.google.com/p/tecnicas-grupo2/
Java Log4j JUnit ant Javadoc
Ambientes de desarrollo:
Windows GNU/Linux Ubuntu 9.10
![Page 5: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/5.jpg)
Descripción de Descripción de ArquitecturaArquitectura
![Page 6: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/6.jpg)
Vista lógica (I)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
- Clases del Modelo de Análisis
![Page 7: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/7.jpg)
Vista lógica (II)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)- Mediador de Acciones (I)
¿Qué ocurre cuando dos jugadores chocan?
(1) Falta
(2) Conflicto de Pelota
(3) Conflicto de Posición
![Page 8: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/8.jpg)
Vista lógica (III)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
- Mediador de Acciones (II)
(1) Falta
AR=Agresividad/Resistencia
AR Jugador s/pelota > AR Jugador c/pelota ¡Hay falta!
¿Hay Falta? Castigar a Jugador s/pelota
![Page 9: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/9.jpg)
Vista lógica (IV)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
- Mediador de Acciones (III)
(2) Conflicto de Pelota
private int calculoMarcacion(HabilidadesJugador hab){int Pm=3; /* ponderacion de habilidad de marcacion */int Pv=2; /* ponderacion de velocidad */int Pa=1; /* ponderacion azar */
int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);
return (hab.getHabilidadMarcando()*Pm +hab.getHabilidadVelocidad()*Pv + azar*Pa)/(Pm+Pv+Pa);
}
private int calculoGambeta(HabilidadesJugador hab){int Pc=3; /* ponderacion de habilidad corriendo */int Pg=2; /* ponderacion de gambeta */int Pa=1; /* ponderacion azar */
int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);
return (hab.getHabilidadCorriendo()*Pc +hab.getHabilidadGambeta()*Pg +azar*Pa)/(Pc+Pg+Pa);}
![Page 10: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/10.jpg)
Vista lógica (V)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
- Mediador de Acciones (IV)
(3) Conflicto de Posición
private int calculoVelocidadCorriendo(HabilidadesJugador hab) {int Pc=2; /* ponderacion de habilidad corriendo */int Pv=3; /* ponderacion de velocidad */int Pa=1; /* ponderacion azar */
int azar= Naturaleza.getInstancia().generarValorEnteroAleatorio(0, 10);return (hab.getHabilidadMarcando()*Pc +hab.getHabilidadVelocidad()*Pv +
azar*Pa)/(Pc+Pv+Pa);}
![Page 11: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/11.jpg)
Vista lógica (VI)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
- Secuencia de un tick de juego
![Page 12: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/12.jpg)
Vista de componentes
Recibe dos parámetros de entrada. Más detalles en Vista de Despliegue.
Único componente:
¡TRIVIAL!
simulador.jar
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
![Page 13: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/13.jpg)
Vista de procesos
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
¿¿ ??
![Page 14: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/14.jpg)
Vista de Despliegue (I)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
![Page 15: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/15.jpg)
Vista de Despliegue (II)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
java –jar simulador.jar configuracion.xml [salida.xml]
Si no se especifica salida, default: simulacion_principal.xml
![Page 16: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/16.jpg)
Descripción de Arquitectura Descripción de Arquitectura (cont.)(cont.)
Vista de Casos de Uso
¿¿ ??
![Page 17: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/17.jpg)
Patrones de diseño Patrones de diseño utilizadosutilizados
Builder
Singleton
Strategy
Command
Observer
PseudoMediator
![Page 18: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/18.jpg)
Builder (I)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
¿Dónde?
¿Por qué?
En la construcción de un Partido
Porque un Partido se construye progresivamente a medida que se van construyendo sus partes: Jugadores, Equipos, Pelota y Cancha
![Page 19: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/19.jpg)
Builder (II)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
![Page 20: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/20.jpg)
• Partido Mediador de Acciones Naturaleza EventQueue
Singleton
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
¿Dónde?
¿Por qué?Por la necesidad de tener una única
instancia de cada clase para ser accedida desde diferentes lugares
![Page 21: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/21.jpg)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
Strategy (I)
¿Dónde?
¿Por qué?
En la jerarquía de Estrategias de los equipos
Por la necesidad de una interfaz flexible para añadir nuevas estrategias y evitar numerosas sentencias if que representen el comportamiento de cada equipo
![Page 22: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/22.jpg)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
Strategy (II)
![Page 23: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/23.jpg)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
Command (I)
¿Dónde?
¿Por qué?
En el comportamiento de cada jugador
Necesidad de una jerarquía que permita extender nuevos comandos ypoder deshacer las acciones.
![Page 24: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/24.jpg)
Command (II)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
![Page 25: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/25.jpg)
Observer (I)
¿Dónde?
¿Por qué?
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
En el bloque de Persistencia. Persistor es Observer y Partido es Observable.
Porque es necesario que se comuniquen los cambios que ocurren en un tick, como ser posiciones, eventos de gol y tarjetas, etc.Partido notifica a Persistor de estos cambios para que sean escritos en la salida XML
![Page 26: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/26.jpg)
Observer (II)
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
![Page 27: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/27.jpg)
¿Dónde?
¿Por qué?
PseudoMediator
Patrones de diseño Patrones de diseño utilizadosutilizados(cont.)(cont.)
En lo que respecta al Mediador de Acciones y todos los participantes
Porque el conocimiento entre Partido y Mediador es bidireccional.El conocimiento hacia Jugador, Pelota y Árbitro es unidireccional, aquí es similar a un Facade.
![Page 28: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/28.jpg)
Posibilidades de extensiónPosibilidades de extensión
Creación de nuevos comandos.
• Crear estrategias propias defensivas u ofensivas. ¡No requiere recompilación! ¿Por qué?
<equipo nombre="Sacachispas" estrategia="EstrategiaOfensiva">
• Creación de nuevas jugadas
![Page 29: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/29.jpg)
Desafíos del proyectoDesafíos del proyecto
Trabajar en un grupo de muchos integrantes.
Numerosas soluciones propuestas.
Definir protocolo para la comunicación con la
aplicación del otro grupo, codificada con
otras tecnologías.
Poco tiempo para implementar.
La etapa de testing es compleja.
![Page 30: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/30.jpg)
Demo / Muestra de códigoDemo / Muestra de código
![Page 31: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/31.jpg)
¿Preguntas?¿Preguntas?
![Page 32: Torneos Virtuales 2º Cuatrimestre 2009 Técnicas de Diseño 75.10 -Grupo D-](https://reader035.fdocumento.com/reader035/viewer/2022062410/5665b43c1a28abb57c904464/html5/thumbnails/32.jpg)
Miguel Abate Gabriel Cartuccia
Mauro Cohen
Federico Goldenberg
María Eugenia Liva
Lucas Mancini
Pablo Mazzini
Mario Silisque
¡Muchas Gracias!¡Muchas Gracias!
Grupo D