public static void rum()
        {
            Console.WriteLine("------------------------------------");
            Console.WriteLine("             TESTING");
            Console.WriteLine("------------------------------------");
            Console.WriteLine("");
            Console.WriteLine("Creando un bombero y calle...");
            Console.WriteLine("");
            Calle calle = new Calle("pedriel", 100, 4, 50);

            Bombero bombero = new Bombero(null);

            bombero.SetNombre("Juan Carlos");
            Director director = new Director(new BuilderSimple());

            Console.WriteLine("Bombero: " + bombero.getNombre());
            Console.WriteLine("Calle: " + calle.getNombre());
            Console.WriteLine("------------------------------------------------");
            Console.WriteLine("");

            bombero.setLugar(new Casa(director, 4, 20, 5, calle));
            bombero.setEstrategiaDeApagado(new Secuencial());
            bombero.apagarIncendio();

            bombero.setLugar(new Plaza(director, "America", 8, 40, calle));
            bombero.setEstrategiaDeApagado(new Escalera());
            bombero.apagarIncendio();


            //Console.WriteLine("Que desea Apagar:");
            //Console.WriteLine("1) Casa");
            //Console.WriteLine("2) Plaza");
            //Console.Write("eliga: ");
            //int opcion = int.Parse(Console.ReadLine());
            //switch (opcion) {
            //    case 1: { bombero.setLugar(new Casa(director, 4, 20, 5, calle)); break; }
            //    case 2: { bombero.setLugar(new Plaza(director, "America", 8, 40, calle)); break; }
            //}

            //Console.WriteLine("------------------------------------------------");
            //Console.WriteLine("");
            //Console.WriteLine("Que estrategia desea usar:");
            //Console.WriteLine("1) Secuencial");
            //Console.WriteLine("2) Escalera");
            //Console.WriteLine("3) ESpiral");
            //Console.Write("eliga:");
            //int opcion1 = int.Parse(Console.ReadLine());
            //switch (opcion1) {
            //    case 1: { bombero.setEstrategiaDeApagado(new Secuencial()); break; }
            //    case 2: { bombero.setEstrategiaDeApagado(new Escalera()); break; }
            //    case 3: { bombero.setEstrategiaDeApagado(new Espiral()); break; }
            //}

            //Console.WriteLine("--------------------------");
            //Console.WriteLine("Ejecutando .......");
            //Console.WriteLine("");
            //bombero.apagarIncendio();
        }
示例#2
0
        //*************************************************************************************************************************

        //METODOS

        //METODO APAGARINCENDIO MODIFICADO POR EL PATRON ABSTRACT FACTORY
        public override void ApagarIncendio2(ILugar pLugar, Calle pCalle)
        {
            this.vehiculo.encenderSirena();
            if (this.vehiculo.conducir())
            {
                this.herramienta.usar();
                this.estrategia.ApagarIncendio(pLugar, pCalle);
                this.herramienta.guardar();
                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("NO PUEDO LLEGAR A PAGAR EL INCENDIO. SE ME HA ROTO LA AUTOBOMBA");
            }
        }
示例#3
0
        public void ApagarIncendio(ILugar pLugar, Calle pCalle)
        {
            int intAguaDisponible = pCalle.GetCaudalAguaPorMinuto();

            ISector [,] matrizLugar = pLugar.getSectores();

            for (int filas = 0; filas < matrizLugar.GetLength(0); filas++)
            {
                for (int columnas = 0; columnas < matrizLugar.GetLength(1); columnas++)
                {
                    //SE LE PASA DIRECTAMENTE LA MATRIZ, EL NUMERO DE FILA Y COLUMNA DE CADA SECTOR  PARA QUE SE EVALUE LA SITUACION DEL SECTOR
                    DeterminarApagado(matrizLugar, filas, columnas, intAguaDisponible);
                }
            }
            Console.WriteLine("EL FUEGO DE LUGAR FUE EXTINGUIDO EN SU TOTALIDAD");
        }
        //debería poder verse:
        //(1, 1)-> 45-> 0

        public void ApagarIncendio(ILugar pLugar, Calle pCalle)
        {
            int intAguaDisponible = pCalle.GetCaudalAguaPorMinuto();

            int[,] matrizLugar = pLugar.getSectores();

            for (int filas = 0; filas < matrizLugar.GetLength(0); filas++)
            {
                for (int columnas = 0; columnas < matrizLugar.GetLength(1); columnas++)
                {
                    int    intSector          = matrizLugar[filas, columnas];
                    int    intResultadoSector = intSector - intAguaDisponible;
                    string strResultado       = "(" + filas + " , " + columnas + ") --> " + intSector;

                    if (intResultadoSector < 0)
                    {
                        strResultado += " --> 0";
                        Console.WriteLine(strResultado);
                    }
                    //SI EL RESULTADO DEL SECTOR ES MAYOR SIGNIFICA QUE NO SE APAGO
                    else
                    {
                        strResultado += " --> " + intResultadoSector;
                        Boolean boolEntrar = true;
                        while (boolEntrar)
                        {
                            int intTerminarApagar = intResultadoSector - intAguaDisponible;
                            if (intTerminarApagar < 0)
                            {
                                strResultado += "--> 0";
                                Console.WriteLine(strResultado);
                                boolEntrar = false;
                            }
                            else
                            {
                                strResultado += " --> " + intTerminarApagar;
                            }
                        }
                    }
                }
            }
            Console.WriteLine("EL FUEGO DE LUGAR FUE EXTINGUIDO EN SU TOTALIDAD");
        }
        public void ApagarIncendio(ILugar pLugar, Calle pCalle)
        {
            int intAguaDisponible = pCalle.GetCaudalAguaPorMinuto();

            int[,] matrizLugar = pLugar.getSectores();

            int intInicio            = 0;
            int intLimiteColumna     = matrizLugar.GetLength(1) - 1;
            int intLimiteFila        = matrizLugar.GetLength(0) - 1;
            int intCantidadElementos = matrizLugar.GetLength(1) * matrizLugar.GetLength(0);
            int intContador          = 0;

            while (intContador < intCantidadElementos)
            {
                for (int columnas = intInicio; columnas <= intLimiteColumna; columnas++)
                {
                    DeterminarApagado(matrizLugar, intInicio, columnas, intAguaDisponible);
                    intContador++;
                }
                for (int filas = intInicio + 1; filas <= intLimiteFila; filas++)
                {
                    DeterminarApagado(matrizLugar, filas, intLimiteFila, intAguaDisponible);
                    intContador++;
                }
                for (int columnasReversa = intLimiteColumna - 1; columnasReversa >= intInicio; columnasReversa--)
                {
                    DeterminarApagado(matrizLugar, intLimiteColumna, columnasReversa, intAguaDisponible);
                    intContador++;
                }
                for (int i = intLimiteFila - 1; i > intInicio; i--)
                {
                    DeterminarApagado(matrizLugar, i, intInicio, intAguaDisponible);
                    intContador++;
                }

                intInicio        = intInicio + 1;
                intLimiteColumna = intLimiteColumna - 1;
                intLimiteFila    = intLimiteFila - 1;
            }
            Console.WriteLine("EL FUEGO DE LUGAR FUE EXTINGUIDO EN SU TOTALIDAD");
        }
示例#6
0
        //*********************************************************************************************************************
        public static void pruebaPatronStrategy()
        {
            //ESTRATEGIA DE APAGADO DE INCENDIO (PUEDEN SER APAGADO POR ESCALERA - SECUENCIAL - ESPIRAL)
            IEstrategy estrategia = new Escalera();
            //SE LA PASA POR PARAMETRO AL CONSTRUCTOR DE LA CLASE BOMBERO LA ESTRATEGIA
            Bombero objBombero = new Bombero(estrategia);

            //SE CREAN LAS INSTANCIAS DE UNA CALLE Y DE UN LUGAR

            Plaza objPlaza = new Plaza(new ConstructorSimple());

            //SE SETEA EL CAUDAL DE AGUA
            objPlaza.SetSuperficieMetrosCuadrados(16);


            Calle objCalle = new Calle();

            objCalle.SetCaudalAguaPorMinuto(50);

            //SE LLAMA AL METODO APAGARINCENDIO() DEL BOMBERO Y SE LE PASA POR PARAMETRO LA CALLE Y EL LUGAR
            objBombero.ApagarIncendio(objPlaza, objCalle);
        }
示例#7
0
        //*********************************************************************************************************************
        public static void pruebaPatronObserver()
        {
            //INSTANCIA DE BOMBERO QUE SERA AGREGADO COMO OBSERVADOR DE LAS PLAZAS Y CASAS
            Bombero objBombero1 = new Bombero(new Espiral());

            //INSTANCIA DE CALLE EN COMUN A TODOS LOS LUGARES (PLAZA Y CASAS)
            Calle objCalle = new Calle();

            //SE SETEA EL CAUDAL DE AGUA
            objCalle.SetCaudalAguaPorMinuto(50);


            //INSTANCIAS DE PLAZA Y CASAS
            Plaza objPlaza = new Plaza(objCalle, 4, new ConstructorSimple());
            Casa  objCasa1 = new Casa(objCalle, 9);
            Casa  objCasa2 = new Casa(objCalle, 9);
            Casa  objCasa3 = new Casa(objCalle, 9);
            Casa  objCasa4 = new Casa(objCalle, 9);
            Casa  objCasa5 = new Casa(objCalle, 9);

            //AGREGANDO BOMBERO OBSERVADOR A LA PLAZA
            objPlaza.AgregarObservador(objBombero1);
            //AGREGANDO BOMBERO OBSERVADOR A LAS CASAS Y CAMBIO DE ESTRATEGIA DE APAGADO DE INCENDIO A ESCALERA
            objBombero1.setEstrategia(new Escalera());
            objCasa1.AgregarObservador(objBombero1);
            objCasa2.AgregarObservador(objBombero1);
            objCasa3.AgregarObservador(objBombero1);
            objCasa4.AgregarObservador(objBombero1);
            objCasa5.AgregarObservador(objBombero1);

            //CAMBIO DE ESTADO EN LA PLAZA Y CASAS (SUENA LA ALARMA), NOTIFICA AL BOMBERO OBSERVADOR PARA QUE APAGUE EL INCENDIO
            objPlaza.Chispa();
            objCasa1.Chispa();
            objCasa2.Chispa();
            objCasa3.Chispa();
            objCasa4.Chispa();
            objCasa5.Chispa();
        }
        public void ApagarIncendio(ILugar pLugar, Calle pCalle)
        {
            int intAguaDisponible = pCalle.GetCaudalAguaPorMinuto();

            int[,] matrizLugar = pLugar.getSectores();
            for (int filas = 0; filas < matrizLugar.GetLength(0); filas++)
            {
                for (int columnas = 0; columnas < matrizLugar.GetLength(1); columnas++)
                {
                    if (filas % 2 != 0)
                    {
                        for (int columna = matrizLugar.GetLength(1) - 1; columna >= 0; columna--)
                        {
                            DeterminarApagado(matrizLugar, filas, columna, intAguaDisponible);
                        }
                        break;
                    }

                    DeterminarApagado(matrizLugar, filas, columnas, intAguaDisponible);
                }
            }
            Console.WriteLine("EL FUEGO DE LUGAR FUE EXTINGUIDO EN SU TOTALIDAD");
        }
        public void apagarIncendio(Lugar lugar, Calle calle)
        {
            ISector[,] matrizDelIncendio = lugar.getSectores();
            int anchuraDeMatrizDeIncendio = matrizDelIncendio.GetLength(0);

            for (int fila = 0; fila < anchuraDeMatrizDeIncendio; fila++)
            {
                for (int columna = 0; columna < anchuraDeMatrizDeIncendio; columna++)
                {
                    double  caudal       = calle.getCaudalDeAguaPorMinuto();
                    ISector sectorActual = matrizDelIncendio[fila, columna];
                    Console.Write("(" + fila + " , " + columna + ")  " + sectorActual);

                    while (!sectorActual.estaApagado())
                    {
                        sectorActual.mojar(caudal);
                    }
                }
            }
            Console.WriteLine("");
            Console.WriteLine("¡¡¡¡¡¡ El fuego de " + lugar + " fue extinguido en su totalidad con la estrategia SECUENCIAL¡¡¡¡¡¡ ");
            Console.WriteLine("");
        }
        // Calle calle = new Calle(100, 4, 60);

        public static void rum()
        {
            Calle    calle    = new Calle("pedriel", 100, 4, 50);
            Bombero  bombero  = new Bombero(null);
            Director director = new Director(new BuilderSimple());

            Lugar casa1 = new Casa(director, 4, 50, 4, calle);
            Lugar casa2 = new Casa(director, 4, 20, 5, calle);
            Lugar casa3 = new Casa(director, 6, 15, 4, calle);
            Lugar casa4 = new Casa(director, 5, 35, 5, calle);
            Lugar casa5 = new Casa(director, 3, 42, 2, calle);

            Lugar plaza = new Plaza(director, "America", 8, 40, calle);

            casa1.agregarObservador(bombero);
            plaza.agregarObservador(bombero);

            casa1.chispa();
            Console.WriteLine("");
            plaza.chispa();

            casa2.chispa();
        }
        //SOBREESCRIBIENDO EL METODO APAGAR INCENDIO


        public override void ApagarIncendio2(ILugar pLugar, Calle pCalle)
        {
            IResponsable bombero   = fabrica.crearHeroe();
            IHerramienta manguera  = fabrica.crearHerramienta();
            IVehiculo    autobomba = fabrica.crearVehiculo();

            //USO DE PATRON SINGLETON
            CuartelDeBomberos cuartel = CuartelDeBomberos.getCuartelBombero();

            //SE AGREGA AL CUARTEL
            cuartel.agregarPersonal(bombero);
            cuartel.agregarHerramienta(manguera);
            cuartel.agregarVehiculo(autobomba);

            //OBTENGO EL BOMBERO RESPONSABLE
            Bombero bomberoResponsable = (Bombero)cuartel.getPersonal();

            //LE ASIGNO UNA ESTRATEGIA
            bomberoResponsable.setEstrategia(new Escalera());

            //DELEGO LA TAREA AL VERDADERO BOMBERO, PASANDO EL ILUGAR Y LA CALLE
            bomberoResponsable.ApagarIncendio2(pLugar, pCalle);
        }
示例#12
0
        public static void run()
        {
            Console.WriteLine("Creando plaza...");
            Console.WriteLine("-----------------------------------------------------------");

            Director director = new Director(new BuilderMixto());

            Calle calle = new Calle("pedriel", 100, 4, 50);
            Lugar plaza = new Plaza(director, "America", 8, 40, calle);

            Console.WriteLine("");

            Console.WriteLine("Apagando incendio en la Plaza con diferentes dificultades");
            Console.WriteLine("");

            IStrategyDeApagadoDeIncendio estrategiaDeApagado1 = new Secuencial();
            IStrategyDeApagadoDeIncendio estrategiaDeApagado2 = new Escalera();
            IStrategyDeApagadoDeIncendio estrategiaDeApagado3 = new Espiral();

            Bombero bombero = new Bombero(null, plaza, estrategiaDeApagado1);

            bombero.apagarIncendio();
        }
示例#13
0
        //*********************************************************************************************************************

        public static void pruebaPatronComposite()
        {
            // IMPLEMENTA LA INTERFACE COMPONENTE, ES LA CLASE COMPUESTO QUE CONTIENE COMPONENTES HOJAS (CALLES, ESQUINAS Y PLAZAS) CONFORMANDO UNA MANZANA
            CompuestoManzana manzana1 = new CompuestoManzana();
            CompuestoManzana manzana2 = new CompuestoManzana();

            for (int i = 0; i < 4; i++)
            {
                Calle   objCalle1   = new Calle();
                Esquina objEsquina1 = new Esquina();
                //SE AGREGAN LAS INSTANCIAS DE CALLES Y ESQUINAS A LA LISTAS DE COMPUESTOS MANZANAS
                manzana1.Agregar(objCalle1);
                manzana1.Agregar(objEsquina1);
                manzana2.Agregar(objCalle1);
                manzana2.Agregar(objEsquina1);
            }

            Plaza objPlaza1 = new Plaza();
            Plaza objPlaza2 = new Plaza();

            //SE AGREGAN LAS PLAZAS A LAS MANZANAS
            manzana1.Agregar(objPlaza1);
            manzana1.Agregar(objPlaza2);
            manzana2.Agregar(objPlaza1);
            manzana2.Agregar(objPlaza2);

            //SE CREA UN COMPUESTO CIUDAD QUE ALMACENA DOS MANZANAS
            CompuestoCiudad objCiudad = new CompuestoCiudad();

            objCiudad.Agregar(manzana1);
            objCiudad.Agregar(manzana2);

            Electricista objElectricista = new Electricista();

            objElectricista.RevisarIluminable(objCiudad);
        }
示例#14
0
 //METODO APAGAR INCENDIO INICIAL, SEGUN LA ESTRATEGIA, DELEGA LA RESPONSABILIDAD A UN ALGORITMO DE LA CLASE DEL PATRON STRATEGY
 public void ApagarIncendio(ILugar pLugar, Calle pCalle)
 {
     this.estrategia.ApagarIncendio(pLugar, pCalle);
 }
示例#15
0
        public Plaza(Director director, string nombre, int cantFaroles, int superficie, Calle calle)
        {
            this.nombre       = nombre;
            cantidadDeFaroles = cantFaroles;
            this.superficieEnMetrosCuadrados = superficie;
            this.calle = calle;
            if (director == null)
            {
                this.Director = new Director(new BuilderSimple());
            }
            else
            {
                this.Director = director;
            }

            //Se incerta aleatoreamente el estado de las lamparas
            faroles = new List <Farol>();
            Random estadoLampara = new Random();

            for (int i = 0; i < cantidadDeFaroles; i++)
            {
                faroles.Add(new Farol(estadoLampara.Next(2)));
            }
        }
 public void Agregar(Calle pCalle, Esquina pEsquina)
 {
     this.calles.Add(pCalle);
     this.esquinas.Add(pEsquina);
 }
示例#17
0
 public void setCalle(Calle calle)
 {
     this.calle = calle;
 }
 public void Agregar(Calle pCalle, Esquina pEsquina, Plaza pPlaza)
 {
     this.calles.Add(pCalle);
     this.esquinas.Add(pEsquina);
     this.plaza = pPlaza;
 }
示例#19
0
        private static void apagarSector(ISector[,] matrizDelIncendio, int fila, int columna, Calle calle)
        {
            double  caudal       = calle.getCaudalDeAguaPorMinuto();
            ISector sectorActual = matrizDelIncendio[fila, columna];

            Console.Write("(" + fila + " , " + columna + ")  " + sectorActual);
            while (!sectorActual.estaApagado())
            {
                sectorActual.mojar(caudal);
            }
        }
 public Casa(Calle calle, int superficie)
 {
     this.objCalle = calle;
     this.superficieMetrosCuadrados = superficie;
 }
示例#21
0
        public static void run()
        {
            //Testing
            Console.WriteLine("Creando escenario del testing....");
            Console.WriteLine("");

            //Esenario
            Director directorBuilderSimple       = new Director(new BuilderSimple());
            Director directorBuilderFavorable    = new Director(new BuilderFavorable());
            Director directorBuilderDesfavorable = new Director(new BuilderDesfavorable());
            Director directorBuilderMixto        = new Director(new BuilderMixto());
            Calle    calle  = new Calle("Pergamino", 100, 4, 60);
            Lugar    casa1  = new Casa(directorBuilderSimple, 4, 42, 4, calle);
            Lugar    casa2  = new Casa(directorBuilderFavorable, 4, 42, 4, calle);
            Lugar    plaza1 = new Casa(directorBuilderDesfavorable, 4, 42, 4, calle);
            Lugar    plaza2 = new Casa(directorBuilderMixto, 4, 42, 4, calle);

            IStrategyDeApagadoDeIncendio estrategiaDeApagado = new Secuencial();

            Console.WriteLine("Se han creado: cuatro directores con un constructor diferente cada uno,");
            Console.WriteLine("               cuatro lugares con un director diferente cada uno,");
            Console.WriteLine("               un bombero con estrategia de apagado Secuencial.");
            Console.WriteLine("-------------------------------------------------------------------------");
            Console.WriteLine("");
            Console.WriteLine("Ejecutando...");
            Console.WriteLine("");

            Console.WriteLine("Test Builder Simple...");
            Console.WriteLine("");
            Bombero bombero1 = new Bombero(null, casa1, estrategiaDeApagado);

            bombero1.apagarIncendio();
            Console.WriteLine("-------------------------------------------------------------------------");
            Console.WriteLine("Presione Enter Para Continuar!");
            Console.ReadKey(true);
            Console.WriteLine("");

            Console.WriteLine("Test Builder Favorable...");
            Console.WriteLine("");
            Bombero bombero2 = new Bombero(null, casa2, estrategiaDeApagado);

            bombero2.apagarIncendio();
            Console.WriteLine("-------------------------------------------------------------------------");
            Console.WriteLine("Presione Enter Para Continuar!");
            Console.ReadKey(true);
            Console.WriteLine("");

            Console.WriteLine("Test Builder Desafavorable...");
            Console.WriteLine("");
            Bombero bombero3 = new Bombero(null, plaza1, estrategiaDeApagado);

            bombero3.apagarIncendio();
            Console.WriteLine("-------------------------------------------------------------------------");
            Console.WriteLine("Presione Enter Para Continuar!");
            Console.ReadKey(true);
            Console.WriteLine("");

            Console.WriteLine("Test Builder Mixto...");
            Console.WriteLine("");
            Bombero bombero4 = new Bombero(null, plaza2, estrategiaDeApagado);

            bombero4.apagarIncendio();
            Console.WriteLine("Presione Enter Para Continuar!");
            Console.ReadKey(true);
            Console.WriteLine("");
        }
示例#22
0
 public DenunciaDeIncendio(ILugar pLugar, Calle pCalle)
 {
     this.lugarDeIncendio = pLugar;
     this.calle           = pCalle;
 }
 public Plaza(Calle pCalle, int pSuperficie, ConstructorSector constructor)
 {
     this.objCalle = pCalle;
     this.superficieMetrosCuadrados = pSuperficie;
     this.constructorConcreto       = constructor;
 }
示例#24
0
 //METODO ACTUALIZAR CORRESPONDIENTE AL PATRON OBSERVER. BOMBERO DEBE IMPLEMENTAR ESTE METODO PORQUE EXTIENDE DE IOBSERVADOR, CUANDO SE PRODUCE UN CAMBIO DE ESTADO SE LLAMA A ESTE
 public void Actualizar(ILugar pObservado, Calle pCalle)
 {
     ApagarIncendio(pObservado, pCalle);
 }
示例#25
0
        //*********************************************************************************************************************

        public static void pruebaPatronBuilder()
        {
            //CONSTRUCTOR CONCRETO DESFAVORABLE DE BUILDER
            ConstructorDesfaborable constructor1 = new ConstructorDesfaborable();

            constructor1.setCantidadPersonas(5);
            constructor1.setTemperatura(40);
            constructor1.setViento(90);

            //CONSTRUCTOR CONCRETO FAVORABLE DE BUILDER
            ConstructorFavorable constructor2 = new ConstructorFavorable();

            constructor2.setIntLluvia(15);

            //CONSTRUCTOR CONCRETO MIXTO DE BUILDER
            ConstructorMixto constructor3 = new ConstructorMixto();

            constructor3.setLluvia(15);

            //CONSTRUCTOR CONCRETO SIMPLE
            ConstructorSimple constructor4 = new ConstructorSimple();

            //ASIGNANADO UN CONSTRUCTOR CONCRETO Y UN DIRECTOR A CADA INSTANCIA DE PLAZA

            Plaza objPlaza1 = new Plaza(constructor1);

            objPlaza1.SetSuperficieMetrosCuadrados(9);

            Plaza objPlaza2 = new Plaza(constructor2);

            objPlaza2.SetSuperficieMetrosCuadrados(9);

            Plaza objPlaza3 = new Plaza(constructor3);

            objPlaza3.SetSuperficieMetrosCuadrados(9);

            Plaza objPlaza4 = new Plaza(constructor4);

            objPlaza4.SetSuperficieMetrosCuadrados(9);

            //INSTANCIA DE CALLE CON SU CAUDAL DE AGUA DISPONIBLE
            Calle objCalle = new Calle(50);

            //INSTANCIA DE BOMBERO, SETEANDOLE UNA ESTRATEGIA DE APAGADO
            Bombero objBombero = new Bombero(new Secuencial());

            Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS DESFABORABLES");
            objBombero.ApagarIncendio(objPlaza1, objCalle);
            Console.WriteLine();

            Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS FABORABLES");
            objBombero.ApagarIncendio(objPlaza2, objCalle);
            Console.WriteLine();

            Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS MIXTAS");
            objBombero.ApagarIncendio(objPlaza3, objCalle);
            Console.WriteLine();

            Console.WriteLine("APAGANDO INCENDIO CON CIRCUNSTANCIAS NORMALES");
            objBombero.ApagarIncendio(objPlaza4, objCalle);
            Console.WriteLine();
        }
示例#26
0
        //*********************************************************************************************************************

        public static void pruebaPatronIterator()
        {
            //ESTRATEGIA DE APAGADO, UN BOMBERO Y UN SECRETARIO QUE RECIBE LA DENUNCIA PARA ASIGNARSELA A UN BOMBERO

            IEstrategy estrategia = new Escalera();
            Bombero    objBombero = new Bombero(estrategia);

            objBombero.setVehiculo(new Ambulancia());
            objBombero.setHerramienta(new Manguera());

            BomberoSecretario secretario = new BomberoSecretario(objBombero);


            //INSTANCIAS DE CALLES (SE LE PASA POR PARAMETRO EL CAUDAL DE AGUA DISPONIBLE)
            Calle calle1 = new Calle(50);
            Calle calle2 = new Calle(50);
            Calle calle3 = new Calle(50);
            Calle calle4 = new Calle(50);
            Calle calle5 = new Calle(50);
            Calle calle6 = new Calle(50);

            // INSTANCIAS DE LUGARES
            ILugar A = new Plaza();
            ILugar B = new Plaza(calle1, 9, new ConstructorSimple());
            ILugar C = new Plaza();
            ILugar D = new Plaza();
            ILugar E = new Plaza();
            ILugar F = new Plaza(calle2, 9, new ConstructorSimple());
            ILugar G = new Plaza(9, new ConstructorSimple());
            ILugar H = new Plaza(9, new ConstructorSimple());
            ILugar I = new Plaza(9, new ConstructorSimple());
            ILugar J = new Plaza(9, new ConstructorSimple());


            //"COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORTABLERO"

            //SE AGREGA A LA LISTA DE OBSERVADORES LA DENUNCIATABLERO EN LOS RESPECTIVOS ILUGARES

            DenunciasPorTablero denuncia1 = new DenunciasPorTablero();

            A.AgregarObservador(denuncia1);
            B.AgregarObservador(denuncia1);
            C.AgregarObservador(denuncia1);
            D.AgregarObservador(denuncia1);
            E.AgregarObservador(denuncia1);
            F.AgregarObservador(denuncia1);

            //SE INVOCA EL METODO CHISPA() DE LOS LUGARES B Y F, ESTE PROVOCA EL CAMBIO DE ESTADO Y NOTIFICA AL OBSERVADOR(LA DENUNCIA POR TABLERO)
            B.Chispa();
            F.Chispa();

            //SE INVOCA AL METODO ATENDERDENUNCIAS() DEL SECRETARIO EL CUAL RECIBE
            //LA DENUNCIA Y CONSTRUYE UN ITERADOR PARA QUE ESTE ITERE CADA DENUNCIA

            secretario.atenderDenuncias(denuncia1);


            //COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORWHATSAPP

            //CREACION DE LISTA ENLAZADA

            //REFERENCIA DE TIPO MensajeWhatsapp QUE NO CONTIENE NADA
            MensajeWhatsapp listadenunciaWhatsapp = null;

            //SE LE ASIGANA UN OBJETO DE TIPO MensajeWhatsapp A TAL REFERENCIA
            //LAS DENUNCIAS RECIBEN LAS CALLES Y LOS LUGARES POR CONSTRUCTOR PARA EL METODO APAGAR INCENDIO DEL BOMBERO
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(G, calle3), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(H, calle4), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(I, calle5), listadenunciaWhatsapp);

            //INSTANCIA DE DENUNCIAPORWHATSAPP A LA CUAL SE LE PASA POR PARAMETRO UNA LISTA ENLAZADA
            DenunciasPorWhatsapp denuncia2 = new DenunciasPorWhatsapp(listadenunciaWhatsapp);

            secretario.atenderDenuncias(denuncia2);

            //COMPROBACION DEL PATRON ITERATOR CON DENUNCIASPORMOSTRADOR

            DenunciasPorMostrador denuncia3 = new DenunciasPorMostrador(new DenunciaDeIncendio(J, calle6));

            secretario.atenderDenuncias(denuncia3);
        }
 public Plaza(Calle pCalle, int pSuperficie)
 {
     this.objCalle = pCalle;
     this.superficieMetrosCuadrados = pSuperficie;
 }
示例#28
0
        //*********************************************************************************************************************


        public static void PruebaPatronProxy()
        {
            //INSTANCIAS DE CALLES (SE LE PASA POR PARAMETRO EL CAUDAL DE AGUA DISPONIBLE)
            Calle calle3 = new Calle(50);
            Calle calle4 = new Calle(50);
            Calle calle5 = new Calle(50);

            //INSTANCIAS DE LUGARES
            ILugar G = new Plaza(9, new ConstructorSimple());
            ILugar H = new Plaza(9, new ConstructorSimple());
            ILugar I = new Plaza(9, new ConstructorSimple());

            //PATRON ITERATOR CON DENUNCIASPORWHATSAPP

            //CREACION DE LISTA ENLAZADA

            //REFERENCIA DE TIPO MensajeWhatsapp QUE NO CONTIENE NADA
            MensajeWhatsapp listadenunciaWhatsapp = null;

            //DENUNCIAS DE INCENDIO
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(G, calle3), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(H, calle4), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(I, calle5), listadenunciaWhatsapp);

            //DENUNCIAS NUEVAS DE LA CONSIGNA NUMERO 12 (CHAIN OF RESPONSABILITY)

            //DOS DENUNCIAS DE INFARTOS
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(new Transeunte()), listadenunciaWhatsapp);

            Passerby    objPasserby = new Passerby(1.2, 1.2, 1.2);
            IInfartable infartable  = new IInfartableAdapter(objPasserby);

            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(infartable), listadenunciaWhatsapp);

            //TRES DENUNCIAS POR ROBO
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);

            //CINCO DENUNCIAS POR LAMPARAS QUEMADAS
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);

            //INSTANCIA DE DENUNCIAPORWHATSAPP A LA CUAL SE LE PASA POR PARAMETRO UNA LISTA ENLAZADA
            DenunciasPorWhatsapp denuncia2 = new DenunciasPorWhatsapp(listadenunciaWhatsapp);


            //FABRICA PARA EL ESTADO DE BOMBERO PROXY PARA QUE PUEDA CREAR AL BOMBERO REAL
            FabricaDeBomberos fabrica = new FabricaDeBomberos();

            //PATRON PROXY PRUEBA

            //UN BOMBERO PROXY ES UN MANEJADOR, ESTE TIENE EN SU ESTADO UNA IFABRICADEHEROES QUE ES USADA PARA CREAR AL BOMBERO REAL A
            //LA HORA DE INVOCAR EL METODO APAGAR INCENDIO

            //CADENA DE RESPONSABILIDADES
            Manejador m = new BomberoProxy(null, fabrica);

            m = new Policia(m, new OrdenVozdeAlto(), new Pistola(), new Patrullero());

            m = new Medico(m, new ProtocoloA(), new Desfibrilador(), new Ambulancia());

            m = new Electricista(m, new Buscapolo(), new Camioneta());


            //SE LE PASA COMO PARAMETRO UNA CADENA DE MANEJADORES AL OPERADOR
            Operador911 objOperador = new Operador911(m);

            objOperador.atenderDenuncias(denuncia2);
        }
 public void setObjCalle(Calle pCalle)
 {
     this.objCalle = pCalle;
 }
示例#30
0
        //*********************************************************************************************************************


        public static void pruebaPatronState()
        {
            //PATRON STATE (EL HEROE VA A REALIZAR SU TAREA SI EL VEHICULO NO SE ROMPE EN EL TRAYECTO (METODO CONDUCIR))

            //INSTANCIAS DE CALLES (SE LE PASA POR PARAMETRO EL CAUDAL DE AGUA DISPONIBLE)
            Calle calle3 = new Calle(50);
            Calle calle4 = new Calle(50);
            Calle calle5 = new Calle(50);

            //INSTANCIAS DE LUGARES
            ILugar G = new Plaza(9, new ConstructorSimple());
            ILugar H = new Plaza(9, new ConstructorSimple());
            ILugar I = new Plaza(9, new ConstructorSimple());

            //PATRON ITERATOR CON DENUNCIASPORWHATSAPP

            //CREACION DE LISTA ENLAZADA

            //REFERENCIA DE TIPO MensajeWhatsapp QUE NO CONTIENE NADA
            MensajeWhatsapp listadenunciaWhatsapp = null;

            //DENUNCIAS DE INCENDIO
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(G, calle3), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(H, calle4), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeIncendio(I, calle5), listadenunciaWhatsapp);

            //DENUNCIAS NUEVAS DE LA CONSIGNA NUMERO 12 (CHAIN OF RESPONSABILITY)

            //DOS DENUNCIAS DE INFARTOS
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(new Transeunte()), listadenunciaWhatsapp);

            Passerby    objPasserby = new Passerby(1.2, 1.2, 1.2);
            IInfartable infartable  = new IInfartableAdapter(objPasserby);

            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeInfarto(infartable), listadenunciaWhatsapp);

            //TRES DENUNCIAS POR ROBO
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeRobo(new Plaza()), listadenunciaWhatsapp);

            //CINCO DENUNCIAS POR LAMPARAS QUEMADAS
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);
            listadenunciaWhatsapp = new MensajeWhatsapp(new DenunciaDeLamparaQuemada(new Plaza()), listadenunciaWhatsapp);

            //INSTANCIA DE DENUNCIAPORWHATSAPP A LA CUAL SE LE PASA POR PARAMETRO UNA LISTA ENLAZADA
            DenunciasPorWhatsapp denuncia2 = new DenunciasPorWhatsapp(listadenunciaWhatsapp);


            //CADENA DE HEROES

            Manejador m = new Bombero(null, new Escalera(), new Manguera(), new Autobomba());

            m = new Policia(m, new OrdenVozdeAlto(), new Pistola(), new Patrullero());

            m = new Medico(m, new ProtocoloA(), new Desfibrilador(), new Ambulancia());

            m = new Electricista(m, new Buscapolo(), new Camioneta());


            //SE LE PASA COMO PARAMETRO UNA CADENA DE MANEJADORES AL OPERADOR
            //ESTOS HEROES REALIZARAN SU TAREA SI EL VEHICULO NO SE ROMPIO POR EL CAMINIO
            Operador911 objOperador = new Operador911(m);

            objOperador.atenderDenuncias(denuncia2);
        }