Skip to content

Commit c7377d5

Browse files
authored
Merge pull request mouredev#4393 from jamerrq/roadmap-21
#21 - C#
2 parents de14d32 + e539569 commit c7377d5

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/*
2+
* EJERCICIO:
3+
* Explora el concepto de callback en tu lenguaje creando un ejemplo
4+
* simple (a tu elección) que muestre su funcionamiento.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Crea un simulador de pedidos de un restaurante utilizando callbacks.
8+
* Estará formado por una función que procesa pedidos.
9+
* Debe aceptar el nombre del plato, una callback de confirmación, una
10+
* de listo y otra de entrega.
11+
* - Debe imprimir un confirmación cuando empiece el procesamiento.
12+
* - Debe simular un tiempo aleatorio entre 1 a 10 segundos entre
13+
* procesos.
14+
* - Debe invocar a cada callback siguiendo un orden de procesado.
15+
* - Debe notificar que el plato está listo o ha sido entregado.
16+
*/
17+
using System;
18+
19+
namespace Roadmap21
20+
{
21+
class Callbacks
22+
{
23+
public delegate void Callback();
24+
25+
public void ProcessOrder(string dish, Callback confirm, Callback ready, Callback delivered)
26+
{
27+
Console.WriteLine($"🥫 Processing order for {dish}...");
28+
confirm();
29+
Random random = new Random();
30+
int seconds = random.Next(1, 11);
31+
System.Threading.Thread.Sleep(seconds * 1000);
32+
ready();
33+
System.Threading.Thread.Sleep(seconds * 1000);
34+
delivered();
35+
}
36+
37+
public void Confirm()
38+
{
39+
Console.WriteLine("Order confirmed 📝");
40+
}
41+
42+
public void Ready()
43+
{
44+
Console.WriteLine("Order ready 🍽");
45+
}
46+
47+
public void Delivered()
48+
{
49+
Console.WriteLine("Order delivered 📥");
50+
}
51+
52+
public void Run()
53+
{
54+
ProcessOrder("Pizza 🍕", Confirm, Ready, Delivered);
55+
}
56+
57+
static void Main(string[] args)
58+
{
59+
Callbacks callbacks = new Callbacks();
60+
callbacks.Run();
61+
}
62+
}
63+
}

0 commit comments

Comments
 (0)