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); }
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}"); }
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); }