public Ayudante(Controlador controlador, Relojero relojero) { this.controlador = controlador; this.relojero = relojero; }
public List <Iteracion> EjercutarSimulacion() { AgregarEvento(new Evento(Evento.Tipos.Inicio, 0)); AgregarEvento(new Evento(Evento.Tipos.FinSimulacion, minutosDeSimulacion)); relojero = new Relojero(this); ayudante = new Ayudante(this, relojero); while (HoraActual < minutosDeSimulacion) { Evento evento = ObtenerProximoEvento(); HoraActual = evento.HoraDelEvento; Iteracion iteracion = new Iteracion() { evento = evento.Tipo.ToString(), hora = HoraActual }; switch (evento.Tipo) { case Evento.Tipos.LlegadaCliente: GenerarProximaLlegada(iteracion); ayudante.NuevoClienteEnCola(iteracion); break; case Evento.Tipos.FinReparacion: relojero.FinalizarReparacion(iteracion); break; case Evento.Tipos.FinAtencionCliente: ayudante.FinalizarAtencionCliente(iteracion); break; case Evento.Tipos.Inicio: GenerarProximaLlegada(iteracion); break; case Evento.Tipos.FinSimulacion: break; } CargarHorasDeProximosEventosEnIteracion(iteracion); iteracion.estadoAyudante = ayudante.Estado.ToString(); iteracion.colaDeClientes = ayudante.clientesEnCola + ""; if (colaMaximaDeClientes < ayudante.clientesEnCola) { colaMaximaDeClientes = ayudante.clientesEnCola; } iteracion.colaMaximaClientes = colaMaximaDeClientes + ""; iteracion.relojesNoTerminadosATiempo = relojesNoTerminadosATiempo + ""; iteracion.estadoRelojero = relojero.Estado.ToString(); iteracion.colaRelojesPorReparar = relojero.RelojesPorReparar + ""; iteracion.colaRelojesListos = relojero.RelojesListos + ""; iteraciones.Add(iteracion); } return(iteraciones); }