12 - Práctica 2: app de productividad con Programación Orientada a Objetos
Lección 12 del curso Python Nivel Avanzado.
Tabla de contenido
Introducción
En la lección anterior vimos cómo controlar el acceso a los atributos de un objeto en Python usando lo que se conoce como las “propiedades”.
Así que es el momento de poner en práctica todo lo que hemos aprendido hasta este punto del curso para resolver un problema real.
Entonces en esta segunda práctica implementaremos una pequeña aplicación que funcionará como administrador de tareas, que permitirá al usuario crear, modificar y visualizar el listado de actividades que debe realizar diariamente, para lo cual usaremos las herramientas de Programación Orientada a Objetos, de manejo de excepciones y de procesamiento de archivos vistas hasta el momento.
Suscríbete y accede al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Descripción de la app
En esta práctica implementaremos una pequeña aplicación que funcionará como administrador de tareas, que permitirá al usuario crear, modificar y visualizar el listado de actividades que debe realizar diariamente, así como agregar y eliminar tareas cuantas veces quiera.
Requerimientos del administrador de tareas: el problema a resolver
La idea es desarrollar un aplicativo de productividad en Python que implemente un administrador de tareas. Este administrador debe cumplir estos requerimientos:
- Debe tener una interfaz tipo texto que facilite la interacción del usuario
- A través de dicha interfaz el usuario debe poder:
- Visualizar el listado de tareas, incluyendo la opción de filtrarlas por categoría
- Agregar o eliminar una tarea
- Modificar el estado de una tarea
- Ver la información detallada de una tarea
- El aplicativo debe actualizar el listado de tareas en cada sesión y debe almacenar esta información para futuras sesiones.
Además, la aplicación debe ser lo suficientemente robusta como para manejar errores durante la interacción con el usuario.
Diseño de la app
Antes de implementar el código debemos determinar si la Programación Orientada a Objetos es el enfoque más adecuado. Observemos que tendremos:
-
“Tareas”, que contendrán:
- Datos: una descripción, categoría, detalles y estado
- Acciones: como modificar su estado y visualizar los detalles de la tarea
-
“Administrador”, que contendrá:
- Datos: el listado de “Tareas”
- Acciones: como mostrar el listado de tareas, agregar/modificar/eliminar y ver el detalle de una tarea
-
“Aplicación”, que contendrá:
- Datos ingresados por el usuario (las opciones de interacción)
- Acciones que permitirán interactuar con el “Administrador” y con las “Tareas” y el almacenamiento y recuperación de sesiones previas.
Como vemos, “Tareas”, “Administrador” y “Aplicación” contendrán tanto datos como acciones e interactuarán entre sí, lo que hace que la Programación Orientada a Objetos sea el enfoque ideal.
Implementación de la clase “Tarea”
Comenzaremos por el objeto más sencillo de todos: Tarea
. Luego este objeto interactuará como tal con las clases administrador
y aplicacion
.
Sus atributos serán:
_descripcion
: unstr
con una breve descripción de la tarea_categoria
: unstr
que permitirá diferenciar un tipo de tarea de otra (ejemplo: “hogar”, “trabajo”, “emprendimiento”, “estudio”, etc.)_detalle
: unstr
que podrá ser extenso y que contendrá la descripción detallada de la tarea_estado
: que podrá serPendiente
(valor por defecto) oCompletada
Sus métodos serán:
- Un método para modificar el
_estado
- Un método para
mostrar
en pantalla la información de la tarea
Implementación de la clase “Administrador”
Este objeto permitirá almacenar varias tareas además de agregar/eliminar/modificar y mostrar el detalle de una tarea en particular.
Sus atributos serán:
_tareas
: el listado con las tareas que vayamos agregando
Sus métodos serán:
mostrar
el listado de tareas en un formato fácil de entender por parte el usuarioagregar_tarea
una nueva tareaactualizar_tarea
para modificar el_estado
de una tareaeliminar_tarea
para eliminar una tarea del listadodetalle_tarea
para imprimir en pantalla la información detallada de una tarea en particular
Implementación de la clase “Aplicación”
Este objeto permitirá la interacción entre el usuario y el administrador de tareas. Además contendrá una pequeña base de datos con el listado de tareas y que se actualizará en cada sesión.
Para la interacción usuario-aplicación implementaremos una interfaz de texto que de entrada contendrá este menú de opciones:
(1) Mostrar el administrador de tareas (2) Agregar tarea (3) Actualizar tarea (4) Eliminar tarea (5) Ver detalle de una tarea (6) Salir
La aplicación se mantendrá en un ciclo while
de duración infinita, del cual saldremos únicamente si escogemos la opción 6.
Los atributos de esta clase serán:
_administrador
: una instancia de la claseAdministrador
Los métodos serán:
_abrir_base_datos
: que permitirá crear/cargar la base de datos con el listado de tareas_ejecutar
: que ejecutará la opción (1-6) indicada por el usuario y realizará la interacción necesaria con los objetos de las clasesAdministrador
yTarea
_actualizar_base_datos
: que permitirá actualizar la base de datos antes del cierre de la sesión
Etapa de producción
Habiendo desarrollado nuestro aplicativo lo único que nos resta es crear un script de Python (administrador_tareas.py
) que permitirá su fácil ejecución desde el Terminal de Mac o la ventana de comandos en Windows.
Recuerda suscribirte para acceder al código fuente y al video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online
Conclusión
Muy bien, con esta práctica hemos visto el potencial que tiene la Programación Orientada a Objetos que nos ha permitido implementar una aplicación bastante versátil y sofisticada.
En lo que queda de esta sección continuaremos revisando algunos elementos específicos de la Programación Orientada a Objetos, comenzando con la próxima lección en donde hablaremos del concepto de herencia.