Esempio n. 1
0
        public static void Main(string[] args)
        {
            PopulateCatalogs();

            Recipe recipe = new Recipe();

            recipe.FinalProduct = GetProduct("Café con leche");
            recipe.AddStep(new Step(GetProduct("Café"), 100, GetEquipment("Cafetera"), 120));
            recipe.AddStep(new Step(GetProduct("Leche"), 200, GetEquipment("Hervidor"), 60));


            // Se instancian dos objetos de tipo IPrinter con las dos distintas
            // clases creadas. Luego se las llama de la misma forma obteniendo
            // distintos resultados. Todos ellos, esperados sin interferir.
            // Se concluye que se definió exitosamente la operación polimórfica.

            IPrinter printer1 = new ConsolePrinter();
            IPrinter printer2 = new FilePrinter();

            printer1.PrintRecipe(recipe);
            printer2.PrintRecipe(recipe);
        }
        public static void Main(string[] args)
        {
            PopulateCatalogs();

            Recipe recipe = new Recipe();

            recipe.FinalProduct = GetProduct("Café con leche");
            recipe.AddStep(new Step(GetProduct("Café"), 100, GetEquipment("Cafetera"), 120));
            recipe.AddStep(new Step(GetProduct("Leche"), 200, GetEquipment("Hervidor"), 60));

            //Se crea una variable del tipo IPrinter para luego asignarle
            // una instancia de ConsolePrinter y otra de FilePrinter.
            //La Operacion PrintTicket es Polimorfica.
            //Cada Clase del Tipo IPrinter tiene la responsabilidad de Imprimir de formas diferentes

            IPrinter printer;

            printer = new ConsolePrinter();
            printer.PrintTicket(recipe);

            printer = new FilePrinter();
            printer.PrintTicket(recipe);
        }
Esempio n. 3
0
        public static void Main(string[] args)
        {
            PopulateCatalogs();

            Recipe recipe = new Recipe();

            recipe.FinalProduct = GetProduct("Café con leche");
            recipe.AddStep(GetProduct("Café"), 100, GetEquipment("Cafetera"), 120);
            recipe.AddStep(GetProduct("Leche"), 200, GetEquipment("Hervidor"), 60);
            recipe.AddStep("Dejar enfriar", 60);

            IPrinter printer;

            printer = new ConsolePrinter();
            printer.PrintRecipe(recipe);
            printer = new FilePrinter();
            printer.PrintRecipe(recipe);

            Console.WriteLine($"Cooked: {recipe.Cooked}");
            recipe.Cook();
            Thread.Sleep(500); // 0.5 segundos
            Console.WriteLine($"Cooked: {recipe.Cooked}");
        }
Esempio n. 4
0
        public static void Main(string[] args)
        {
            PopulateCatalogs();

            Recipe recipe = new Recipe();

            recipe.FinalProduct = GetProduct("Café con leche");

            /// <summary>
            /// Se saca la responsabilidad a Program de crear los objetos de tipo Step
            /// y se le asigna a la clase Recipe de acuerdo al patrón Creator,
            /// se detalla en la clase Recipe
            /// </summary>
            /// <returns></returns>
            recipe.AddStep(GetProduct("Café"), 100, GetEquipment("Cafetera"), 120);
            recipe.AddStep(GetProduct("Leche"), 200, GetEquipment("Hervidor"), 60);

            IPrinter printer;

            printer = new ConsolePrinter();
            printer.PrintRecipe(recipe);
            printer = new FilePrinter();
            printer.PrintRecipe(recipe);
        }