Solución del ejercicio 2 (incluye cliente)