forked from mouredev/roadmap-retos-programacion
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Corrección Roadmap 25 + Nuevo ejercicio 26
- Loading branch information
Showing
3 changed files
with
116 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import logging | ||
import time | ||
|
||
""" | ||
Ejercicio | ||
""" | ||
|
||
logging.basicConfig(level=logging.DEBUG, | ||
format="%(asctime)s - %(levelname)s - %(message)s", | ||
handlers=[logging.StreamHandler()]) | ||
|
||
logging.debug("Esto es un mensaje de DEBUG") | ||
logging.info("Esto es un mensaje de INFO") | ||
logging.warning("Esto es un mensaje de WARNING") | ||
logging.error("Esto es un mensaje de ERROR") | ||
logging.critical("Esto es un mensaje de CRITICAL") | ||
|
||
""" | ||
Extra | ||
""" | ||
|
||
|
||
class TaskManager: | ||
|
||
def __init__(self) -> None: | ||
self.tasks = {} | ||
|
||
def add_task(self, name: str, description: str): | ||
start_time = time.time() | ||
if name not in self.tasks: | ||
self.tasks[name] = description | ||
logging.info(f"Tarea añadida: {name}.") | ||
else: | ||
logging.warning( | ||
f"Se ha intentado añadir una tarea que ya existe: {name}.") | ||
logging.debug(f"Número de tareas: {len(self.tasks)}") | ||
end_time = time.time() | ||
self._print_time(start_time, end_time) | ||
|
||
def delete_task(self, name: str): | ||
start_time = time.time() | ||
if name in self.tasks: | ||
del self.tasks[name] | ||
logging.info(f"Se la eliminado la tarea: {name}.") | ||
else: | ||
logging.error( | ||
f"Se ha intentado eliminar una tarea que no exsite: {name}.") | ||
logging.debug(f"Número de tareas: {len(self.tasks)}") | ||
end_time = time.time() | ||
self._print_time(start_time, end_time) | ||
|
||
def list_tasks(self): | ||
start_time = time.time() | ||
if self.tasks: | ||
logging.info(f"Se va a imprimir la lista de tareas.") | ||
for name, description in self.tasks.items(): | ||
print(f"{name} - {description}") | ||
else: | ||
logging.info("No hay tareas para mostar.") | ||
end_time = time.time() | ||
self._print_time(start_time, end_time) | ||
|
||
def _print_time(self, start_time, end_time): | ||
logging.debug( | ||
f"Tiempo de ejecución: {end_time - start_time:.6f} segundos.") | ||
|
||
|
||
task_manager = TaskManager() | ||
task_manager.list_tasks() | ||
task_manager.add_task("Pan", "Comprar 5 barras de pan") | ||
task_manager.add_task("Python", "Estudiar Python") | ||
task_manager.list_tasks() | ||
task_manager.delete_task("Python") | ||
task_manager.list_tasks() | ||
task_manager.add_task("Pan", "Comprar 5 barras de pan") | ||
task_manager.delete_task("Python") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# #26 SOLID: PRINCIPIO DE RESPONSABILIDAD ÚNICA (SRP) | ||
> #### Dificultad: Media | Publicación: 24/06/24 | Corrección: 01/07/24 | ||
## Ejercicio | ||
|
||
``` | ||
/* | ||
* EJERCICIO: | ||
* Explora el "Principio SOLID de Responsabilidad Única (Single Responsibility | ||
* Principle, SRP)" y crea un ejemplo simple donde se muestre su funcionamiento | ||
* de forma correcta e incorrecta. | ||
* | ||
* DIFICULTAD EXTRA (opcional): | ||
* Desarrolla un sistema de gestión para una biblioteca. El sistema necesita | ||
* manejar diferentes aspectos como el registro de libros, la gestión de usuarios | ||
* y el procesamiento de préstamos de libros. | ||
* Requisitos: | ||
* 1. Registrar libros: El sistema debe permitir agregar nuevos libros con | ||
* información básica como título, autor y número de copias disponibles. | ||
* 2. Registrar usuarios: El sistema debe permitir agregar nuevos usuarios con | ||
* información básica como nombre, número de identificación y correo electrónico. | ||
* 3. Procesar préstamos de libros: El sistema debe permitir a los usuarios | ||
* tomar prestados y devolver libros. | ||
* Instrucciones: | ||
* 1. Diseña una clase que no cumple el SRP: Crea una clase Library que maneje | ||
* los tres aspectos mencionados anteriormente (registro de libros, registro de | ||
* usuarios y procesamiento de préstamos). | ||
* 2. Refactoriza el código: Separa las responsabilidades en diferentes clases | ||
* siguiendo el Principio de Responsabilidad Única. | ||
*/ | ||
``` | ||
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**. | ||
|
||
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras. | ||
|
||
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**. |