En este módulo final, aplicarás todos los conceptos y habilidades que has aprendido a lo largo del curso para desarrollar un proyecto completo. Este proyecto te permitirá consolidar tus conocimientos y demostrar tu capacidad para resolver problemas de programación de manera efectiva.

Objetivos del Proyecto

  1. Aplicar conceptos básicos de programación: Utilizar variables, operadores, estructuras de control, funciones y estructuras de datos.
  2. Desarrollar un algoritmo: Implementar algoritmos de búsqueda, ordenamiento o recursión según sea necesario.
  3. Utilizar buenas prácticas: Documentar el código, manejar errores y utilizar control de versiones.
  4. Completar un ciclo de desarrollo: Planificar, diseñar, implementar, probar y presentar un proyecto de software.

Descripción del Proyecto

Tema del Proyecto

El proyecto consistirá en desarrollar una aplicación de gestión de tareas. Esta aplicación permitirá a los usuarios agregar, editar, eliminar y visualizar tareas. Además, las tareas podrán ser marcadas como completadas o pendientes.

Requisitos Funcionales

  1. Agregar Tareas: El usuario debe poder agregar nuevas tareas con un título y una descripción.
  2. Editar Tareas: El usuario debe poder editar el título y la descripción de una tarea existente.
  3. Eliminar Tareas: El usuario debe poder eliminar tareas.
  4. Marcar Tareas como Completadas/Pendientes: El usuario debe poder marcar una tarea como completada o pendiente.
  5. Visualizar Tareas: El usuario debe poder ver una lista de todas las tareas, con la opción de filtrar por tareas completadas y pendientes.

Requisitos No Funcionales

  1. Interfaz de Usuario: La aplicación debe tener una interfaz de usuario simple y fácil de usar.
  2. Persistencia de Datos: Las tareas deben ser guardadas de manera que persistan entre sesiones de uso de la aplicación.
  3. Documentación: El código debe estar bien documentado, con comentarios claros y concisos.
  4. Control de Versiones: Utilizar un sistema de control de versiones (como Git) para gestionar el desarrollo del proyecto.

Planificación del Proyecto

Fases del Proyecto

  1. Planificación y Diseño: Definir los requisitos detallados, diseñar la arquitectura de la aplicación y crear un plan de desarrollo.
  2. Implementación: Escribir el código para implementar las funcionalidades definidas.
  3. Pruebas: Probar la aplicación para asegurarse de que funciona correctamente y cumple con los requisitos.
  4. Presentación: Preparar una presentación del proyecto, incluyendo una demostración de la aplicación y una explicación del proceso de desarrollo.

Herramientas Recomendadas

  • Entorno de Desarrollo: Utiliza un IDE o editor de texto con el que te sientas cómodo (por ejemplo, Visual Studio Code, PyCharm).
  • Control de Versiones: Git y GitHub para gestionar el código y colaborar si es necesario.
  • Lenguaje de Programación: Puedes utilizar cualquier lenguaje de programación que hayas aprendido durante el curso (por ejemplo, Python, JavaScript).

Ejemplo de Estructura del Proyecto

A continuación, se presenta un ejemplo de cómo podrías estructurar tu proyecto en Python:

task_manager/
│
├── main.py
├── task.py
├── task_manager.py
├── ui.py
├── README.md
└── .gitignore

Descripción de Archivos

  • main.py: Punto de entrada de la aplicación.
  • task.py: Definición de la clase Task que representa una tarea.
  • task_manager.py: Lógica de negocio para gestionar las tareas (agregar, editar, eliminar, marcar como completadas/pendientes).
  • ui.py: Interfaz de usuario para interactuar con el usuario.
  • README.md: Documentación del proyecto.
  • .gitignore: Archivos y directorios que deben ser ignorados por Git.

Ejercicio Práctico

Paso 1: Definir la Clase Task

Define una clase Task en el archivo task.py que tenga los siguientes atributos y métodos:

class Task:
    def __init__(self, title, description):
        self.title = title
        self.description = description
        self.completed = False

    def mark_completed(self):
        self.completed = True

    def mark_pending(self):
        self.completed = False

    def __str__(self):
        status = 'Completed' if self.completed else 'Pending'
        return f"{self.title} - {self.description} [{status}]"

Paso 2: Implementar el Gestor de Tareas

Implementa la lógica de negocio en task_manager.py:

class TaskManager:
    def __init__(self):
        self.tasks = []

    def add_task(self, task):
        self.tasks.append(task)

    def edit_task(self, index, title, description):
        if 0 <= index < len(self.tasks):
            self.tasks[index].title = title
            self.tasks[index].description = description

    def delete_task(self, index):
        if 0 <= index < len(self.tasks):
            self.tasks.pop(index)

    def mark_task_completed(self, index):
        if 0 <= index < len(self.tasks):
            self.tasks[index].mark_completed()

    def mark_task_pending(self, index):
        if 0 <= index < len(self.tasks):
            self.tasks[index].mark_pending()

    def get_tasks(self, completed=None):
        if completed is None:
            return self.tasks
        return [task for task in self.tasks if task.completed == completed]

Paso 3: Crear la Interfaz de Usuario

Implementa una interfaz de usuario simple en ui.py:

def display_tasks(tasks):
    for i, task in enumerate(tasks):
        print(f"{i}. {task}")

def main():
    manager = TaskManager()

    while True:
        print("\nTask Manager")
        print("1. Add Task")
        print("2. Edit Task")
        print("3. Delete Task")
        print("4. Mark Task Completed")
        print("5. Mark Task Pending")
        print("6. View All Tasks")
        print("7. View Completed Tasks")
        print("8. View Pending Tasks")
        print("9. Exit")

        choice = input("Choose an option: ")

        if choice == '1':
            title = input("Enter task title: ")
            description = input("Enter task description: ")
            manager.add_task(Task(title, description))
        elif choice == '2':
            index = int(input("Enter task index to edit: "))
            title = input("Enter new task title: ")
            description = input("Enter new task description: ")
            manager.edit_task(index, title, description)
        elif choice == '3':
            index = int(input("Enter task index to delete: "))
            manager.delete_task(index)
        elif choice == '4':
            index = int(input("Enter task index to mark as completed: "))
            manager.mark_task_completed(index)
        elif choice == '5':
            index = int(input("Enter task index to mark as pending: "))
            manager.mark_task_pending(index)
        elif choice == '6':
            display_tasks(manager.get_tasks())
        elif choice == '7':
            display_tasks(manager.get_tasks(completed=True))
        elif choice == '8':
            display_tasks(manager.get_tasks(completed=False))
        elif choice == '9':
            break
        else:
            print("Invalid choice. Please try again.")

if __name__ == "__main__":
    main()

Paso 4: Documentar el Proyecto

Asegúrate de documentar tu proyecto en el archivo README.md, incluyendo una descripción del proyecto, instrucciones para ejecutar la aplicación y cualquier otra información relevante.

Paso 5: Control de Versiones

Utiliza Git para gestionar tu proyecto. Asegúrate de realizar commits frecuentes y de mantener un historial claro de los cambios realizados.

Conclusión

En esta sección, has definido el proyecto final del curso, que consiste en desarrollar una aplicación de gestión de tareas. Este proyecto te permitirá aplicar todos los conceptos y habilidades que has aprendido a lo largo del curso. Asegúrate de seguir las fases del proyecto y de utilizar las herramientas recomendadas para completar tu proyecto de manera efectiva. ¡Buena suerte!

© Copyright 2024. Todos los derechos reservados