RAD, Manipulação de Dados em Arquivos, Python
com Banco de Dados, Interface Gráfica e Aplicações
RAD
1. RAD (Rapid Application Development)
1.1 Conceitos Fundamentais
A metodologia RAD (Rapid Application Development) é uma abordagem ágil para
desenvolvimento de software que enfatiza:
• Prototipagem rápida
• Feedback contínuo dos usuários
• Ciclos iterativos e incrementais
• Entrega rápida de funcionalidades
Princípios básicos:
1. Envolvimento ativo dos usuários: Clientes participam diretamente do processo de
desenvolvimento.
2. Equipes pequenas e empoderadas: Times reduzidos para agilizar decisões.
3. Entrega frequente: Foco em entregar produtos funcionais rapidamente.
4. Desenvolvimento incremental: O sistema evolui através de prototipagem iterativa.
5. Uso de ferramentas CASE: Ferramentas que automatizam partes do desenvolvimento.
1.2 Fases da RAD
1. Planejamento de requisitos: Definição das necessidades do negócio com usuários e
desenvolvedores.
2. Design do usuário: Criação de modelos e protótipos em colaboração.
3. Construção: Desenvolvimento dos protótipos em modelos operacionais.
4. Transição: Implementação do sistema, testes e treinamento dos usuários.
1.3 Quando Aplicar
• Projetos de pequena/média escala
• Quando os requisitos podem mudar frequentemente
• Sistemas com forte componente de interface gráfica
• Quando há disponibilidade de usuários para feedback constante
1.4 Vantagens e Desvantagens
Vantagens:
• Redução de tempo de desenvolvimento
• Maior satisfação do cliente
• Identificação precoce de problemas
• Flexibilidade para mudanças
Desvantagens:
• Requer equipe altamente qualificada
• Dificuldade em projetos de grande escala
• Pode gerar dívida técnica se não bem gerenciado
2. Manipulação de Dados em Arquivos com Python
2.1 Operações Básicas
Principais operações com arquivos:
• Abertura: open(caminho, modo)
• Leitura: read(), readline(), readlines()
• Escrita: write(), writelines()
• Fechamento: close() ou uso do contexto with
2.2 Modos de Acesso
• 'r': Leitura (padrão)
• 'w': Escrita (sobrescreve)
• 'a': Append (adiciona ao final)
• 'b': Modo binário
• '+': Atualização (leitura e escrita)
2.3 Boas Práticas
• Sempre usar with para garantir fechamento automático
• Tratar exceções como FileNotFoundError e PermissionError
• Validar caminhos com [Link]
2.4 Manipulação de Diretórios
• [Link](): Cria diretório
• [Link](): Remove diretório vazio
• [Link](): Lista conteúdo do diretório
• [Link](): Concatena caminhos de forma multiplataforma
2.5 Exemplo Prático
python
Copy
Download
# Leitura e escrita com tratamento de erros
try:
with open('[Link]', 'r') as arquivo:
conteudo = [Link]()
with open('[Link]', 'w') as backup:
[Link](conteudo)
except FileNotFoundError:
print("Arquivo não encontrado!")
except PermissionError:
print("Sem permissão para acessar o arquivo!")
3. Python com Banco de Dados
3.1 Conexão com Bancos Relacionais
Principais bibliotecas:
• SQLite: sqlite3 (embutida no Python)
• MySQL/MariaDB: mysql-connector-python
• PostgreSQL: psycopg2
3.2 Operações CRUD
python
Copy
Download
import sqlite3
# Conexão
conn = [Link]('[Link]')
cursor = [Link]()
# Criação de tabela
[Link]('''CREATE TABLE IF NOT EXISTS usuarios
(id INTEGER PRIMARY KEY, nome TEXT, email TEXT)''')
# Inserção
[Link]("INSERT INTO usuarios (nome, email) VALUES (?, ?)",
('João', 'joao@[Link]'))
# Consulta
[Link]("SELECT * FROM usuarios")
for linha in [Link]():
print(linha)
# Fechamento
[Link]()
[Link]()
3.3 ORMs (Mapeamento Objeto-Relacional)
• SQLAlchemy: Poderoso e flexível
• Django ORM: Integrado ao framework Django
• Peewee: Simples e intuitivo
Exemplo com SQLAlchemy:
python
Copy
Download
from sqlalchemy import create_engine, Column, Integer, String
from [Link] import declarative_base
Base = declarative_base()
class Usuario(Base):
__tablename__ = 'usuarios'
id = Column(Integer, primary_key=True)
nome = Column(String)
email = Column(String)
engine = create_engine('sqlite:///[Link]')
[Link].create_all(engine)
4. Interface Gráfica com Python
4.1 Principais Bibliotecas
1. Tkinter: Padrão do Python, simples de usar
2. PyQt/PySide: Poderoso, usado em aplicações profissionais
3. Kivy: Focado em aplicações multiplataforma e mobile
4. wxPython: Nativo em cada sistema operacional
4.2 Exemplo com Tkinter
python
Copy
Download
import tkinter as tk
from tkinter import messagebox
def saudacao():
[Link]("Saudação", f"Olá, {[Link]()}!")
root = [Link]()
[Link]("Exemplo RAD")
[Link](root, text="Nome:").pack()
nome = [Link](root)
[Link]()
[Link](root, text="Saudar", command=saudacao).pack()
[Link]()
4.3 Padrões de Design
• MVC (Model-View-Controller): Separa lógica, dados e interface
• Observer: Atualizações automáticas quando dados mudam
• Singleton: Garante uma única instância da janela principal
5. Aplicando RAD com Python
5.1 Fluxo de Desenvolvimento
1. Prototipação Rápida:
o Usar frameworks como Django (web) ou PyQt (desktop)
o Criar MVPs funcionais rapidamente
2. Feedback Iterativo:
o Apresentar protótipos aos usuários
o Coletar e implementar feedbacks
3. Refinamento Progressivo:
o Adicionar funcionalidades incrementalmente
o Priorizar features baseado no valor para o usuário
5.2 Ferramentas para RAD em Python
• Django: Para aplicações web
• PyInstaller: Para empacotamento de aplicações desktop
• Frameworks GUI: PyQt, Tkinter, Kivy
• Ferramentas CASE: PyCharm (IDE com suporte a prototipagem)
5.3 Exemplo de Aplicação RAD
Cenário: Sistema de cadastro de clientes
1. Protótipo 1 (Semana 1):
o Tela simples com campos básicos (nome, email)
o Botão de salvar em arquivo JSON
2. Protótipo 2 (Semana 2):
o Adicionar validações
o Listagem dos clientes cadastrados
3. Versão Final (Semana 3):
o Integração com banco de dados
o Relatórios básicos
o Sistema de busca
6. Exercícios Resolvidos
6.1 Exercício RAD
Problema: Implemente um protótipo de calculadora usando Tkinter com abordagem RAD.
Solução:
python
Copy
Download
import tkinter as tk
class Calculadora:
def __init__(self, root):
[Link] = root
[Link]("Calculadora RAD")
# Entrada
[Link] = [Link](root, width=20, font=('Arial', 16))
[Link](row=0, column=0, columnspan=4)
# Botões
botoes = [
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'C', '0', '=', '+'
]
for i, texto in enumerate(botoes):
btn = [Link](root, text=texto, width=5, height=2,
command=lambda t=texto: [Link](t))
[Link](row=1 + i//4, column=i%4)
def clique(self, texto):
if texto == 'C':
[Link](0, [Link])
elif texto == '=':
try:
resultado = eval([Link]())
[Link](0, [Link])
[Link](0, str(resultado))
except:
[Link](0, [Link])
[Link](0, "Erro")
else:
[Link]([Link], texto)
# Protótipo inicial
root = [Link]()
app = Calculadora(root)
[Link]()
6.2 Exercício Manipulação de Arquivos
Problema: Crie um script para organizar arquivos por extensão em diretórios específicos.
Solução:
python
Copy
Download
import os
import shutil
def organizar_arquivos(diretorio):
# Criar diretórios se não existirem
for ext in ['pdf', 'txt', 'img']:
[Link]([Link](diretorio, ext), exist_ok=True)
# Mover arquivos
for arquivo in [Link](diretorio):
if [Link]([Link](diretorio, arquivo)):
ext = [Link]('.')[-1].lower()
if ext in ['pdf', 'txt', 'jpg', 'png']:
origem = [Link](diretorio, arquivo)
destino = [Link](diretorio, ext, arquivo)
[Link](origem, destino)
print(f"Movido: {arquivo} -> {ext}/")
# Uso
organizar_arquivos('/caminho/para/diretorio')
Conclusão
A combinação de Python com metodologias RAD oferece um ambiente poderoso para
desenvolvimento ágil de aplicações. Através dos conceitos apresentados - desde manipulação
básica de arquivos até integração com bancos de dados e criação de interfaces gráficas - é
possível construir sistemas funcionais rapidamente, iterando com base no feedback dos
usuários.
As ferramentas e técnicas discutidas permitem:
• Prototipagem acelerada
• Desenvolvimento incremental
• Adaptação a mudanças de requisitos
• Entrega contínua de valor