UFCD 10794
Programação Avançada com Python
Formador: Gisela Firmino
Objetivos
Aplicar as boas práticas de escrita de código.
Criar classes e utilizar objetos de forma efetiva.
Utilizar as propriedades dos objetos para criar "código dinâmico".
Efetuar a depuração e log.
Programar para a web em Python.
Reflexão
Esta UFCD vem dar continuidade à aprendizagem no desenvolvimento de software, utilizando a linguagem de programação Python. Para o efeito, implementei a minha ideia de projeto - uma aplicação desktop.
A aplicação To-DO, pretende ser uma aplicação para organização de listas de coisas para fazer. Neste sentido, ela tem uma base de dados [SQLite] e é através desta ligação que é feita a criação, atualização, visualização e eliminação de dados, bem como, consultas e pesquisas aos mesmos.
O objetivo geral da aplicação To-DO é oferecer uma ferramenta prática, leve e eficiente para a gestão de tarefas e outras categorias, que ajuda os seus utilizadores na organização, produtividade e alcance dos seus objetivos. Ela permite ao utilizador definir títulos, descrições, datas de conclusão e prioridades.
Tecnologias associadas
Visual Studio Code
Também conhecido como VS Code, é um editor de código gratuito e de código aberto criado pela Microsoft. Está disponível para download nos sistemas operativos Windows, macOS e Linux e existe uma versão baseada na Web à qual se pode aceder a partir de uma navegador. Foi o IDE utilizado para desenvolver o código e construir a aplicação.
Linguagem de programação Python
Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. It supports multiple programming paradigms beyond object-oriented programming, such as procedural and functional programming. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as an extension language for applications that need a programmable interface. Finally, Python is portable: it runs on many Unix variants including Linux and macOS, and on Windows. - Python Software Foundation FAQ
Instalação e configuração
Interpretador Python
O interpretador Python é um software crucial para executar o código escrito com a linguagem Python. Ele traduz o código escrito para a linguagem máquina, que o computador pode executar.
Ambiente Virtual
Um ambiente virtual é criado sobre uma instalação existente do Python, conhecido como o Python “base” do ambiente virtual, e pode, opcionalmente, ser isolado dos pacotes no ambiente base, de modo que apenas aqueles explicitamente instalados no ambiente virtual estejam disponíveis. É uma prática recomendada para o isolamento de dependências, controlo de versões, simplicidade e reutilização de código. O módulo venv oferece suporte à criação de ambientes virtuais.
Biblioteca GUI - Tkinter
O Tkinter é uma biblioteca built-in do Python para o desenvolvimento de interfaces gráficas de utilizador (GUI), que é multiplataforma. Com o Tkinter é possível criar aplicações com janelas, botões, menus e vários elementos visuais que são renderizados em sistemas operativos como o Windows, o macOS e o Linux.
import tkinter
Base de Dados - SQLite
O SQLite é um sistema de gestão de bases de dados relacionais, que pode ser utilizado em aplicações desktop para armazenar dados locais.
Instalação
pip install sqlite3
Importação no ficheiro .py
import sqlite3
Diagrama da base de dados
Figura 1 - Diagrama da base de dados To-DO
Themes - Adapta
Tema escolhido para desenvolver a interface de utilizador [UI].
Instalação
pip install ttkthemes
Importação no ficheiro .py
from ttkthemes import ThemedTk
Figura 2 - Tema Adapta
Calendário
O calendário é aquele que permite ao utilizador escolher a data de conclusão para uma tarefa, por exemplo.
Instalação
pip install tkcalendar
Importação no ficheiro .py
from tkcalendar import Calendar
Implementação
O projeto foi iniciado pela criação da base de dados, das tabelas e das suas relações. Gradualmente, foi construída a interface de utilizador, com janelas e botões adequados à interação com a aplicação. Os dados gerais introduzidos na aplicação são visualizados na janela principal em forma de tabela de dados. As janelas secundárias permitem criar novo, atualizar a aplicação, fazer pesquisas e consultas personalizadas. As operações básicas de gestão de dados - criar, ler, atualizar e eliminar [CRUD], estão implementadas na aplicação.
Figura 3 - Janela principal aplicação To-DO
Desafios
Durante o desenvolvimento do projeto encontrei alguns desafios, nomeadamente com o primeiro IDE que escolhi, o PyCharm, onde alguns plugins apenas estão disponíveis na versão profissional, o que me impedia de construir a aplicação. Também selecionei a biblioteca customTkinter e constatei alguns bugs no programa, em particular, nas janelas toplevel que apareciam por detrás da janela principal. Uma biblioteca que também abandonei. Durante o desenvolvimento do código encontrei outro desafio, o formato ISO da data do calendário, tem que corresponder a certas especificações. Como solução, recorri à documentação oficial do Python, através da qual me foi possível reutilizar o código padrão.
Conclusão
Posso concluir, que o desenvolvimento deste projeto me permitiu, adquirir competências em programação e relacionar conhecimentos. Ao construir este projeto do zero, consegui ter uma visão de todo o processo de desenvolvimento de software – formular a ideia, planear, investigar, analisar, apresentar um design, entrando na implementação e nos testes. Durante este modo de aprendizagem, consegui analisar problemas e identificar soluções, utilizei o pensamento lógico e criativo, e foi-me permitido trabalhar de forma autónoma e assumir a responsabilidade pelo meu trabalho, o que contribui para o meu crescimento enquanto profissional.