Esempio n. 1
0
 public Ayudante(Controlador controlador, Relojero relojero)
 {
     this.controlador = controlador;
     this.relojero    = relojero;
 }
Esempio n. 2
0
        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);
        }