Você está na página 1de 2

Programao Modular - Trabalho Prtico 1

UFMG DCC ICEX


Professor: Marco Tlio Valente (mtov@dcc.ufmg.br)
Monitor: Henrique Santos C. Rocha (henrique.rocha@gmail.com)
Valor: 15 pontos.
Data de Entrega: 29 /10 / 2012
ltima Atualizao: 03 / 10 / 2012

Enunciado
O trabalho deve ser feito em grupo de no
mximo dois alunos. Este trabalho consiste
na
implementao
de
uma
pequena
aplicao desktop, usando tcnicas e prticas de
programao
modular.
Nesta
implementao dever ser usado o modelo
arquitetural de camadas MVC (Model-ViewController).
Por
se
tratar
de
uma
implementao orientada a objetos, procure
encapsular
o
mximo
possvel
as
funcionalidades do sistema em classes e criar
namespaces apropriados para encapsular os componentes de cada camada.
Descrio da Aplicao
A aplicao a ser implementada consiste no controle de uma mala direta de Clientes. Ser
necessrio realizar as operaes bsicas de CRUD (Create-Read-Update-Delete) de Clientes e
a gerao de uma lista com todos os clientes. Sero armazenados os seguintes dados de cliente:
Cdigo (gerado automaticamente pelo banco de dados), Nome, Celular, Telefone Residencial,
Telefone Comercial, Email, CEP, e Cidade.
Camada de Viso (View)
Nesta camada deve-se fazer a interface grfica da aplicao. Deve-se usar alguma biblioteca ou
framework de interface grfica (no pode simplesmente arrastar componentes do Visual Studio
por exemplo). Sugere-se o uso dos frameworks Qt1, GTK+2 ou wxWidgets3 para construo da
interface.
Esta camada deve apenas lidar com os componentes da interface, recebendo dados do usurio e
enviando-os para a camada de controle (ou vice-versa). Cdigo de lgica de negcio no pode
ficar nessa camada.
Camada de Controle (Controller)
Nesta camada deve-se implementar a lgica de negcios da aplicao. Esta camada pode se
comunicar com todas demais camadas.

Qt um framework de Interface Grfica para C++ baseado na linguagem QML, est disponvel em
<http://qt-project.org>
2 GTK+ um toolkit multi-plataforma para criao de Interface Grficas, est disponvel em <http://
www.gtk.org/>
3 exWidgets uma biblioteca para criao de interfaces multi-plataforma em C++, est disponvel em
<http://www.wxwidgets.org/>

Camada de Modelo (Model)


Esta camada trata da persistncia e manipulao direta dos dados da aplicao. As classes dessa
camada so as nicas que podem se comunicar com um Banco de Dados ou realizar operaes
sobre Arquivos. No caso dessa aplicao ser usado o Banco de Dados MySQL4. Recomendase usar a ferramenta MySQL Workbench para auxiliar na criao da tabela e nos testes de
comandos SQL. Juntamente com o enunciado deste trabalho, foi disponibilizado um Script SQL
para criao da Tabela de Cliente e scripts de exemplo para Insero, Remoo, Atualizao e
Seleo de Dados.
Todas as funes dessa camada devem trabalhar com classes de entidade (veja logo abaixo) para
trafegar informaes. Por exemplo, o mtodo de insero de cliente, recebe como parmetro
um objeto de Entidade contendo os dados do cliente a ser inserido. O mtodo de listagem de
clientes retorna um vetor (ou lista) de objetos de Entidade.
Classes de Entidade (Controller - Model)
Em um sistema de informao orientado a objetos, os dados so armazenados nas chamadas
Classes de Entidades. Essas classes contm atributos privados que refletem campos (ou
atributos derivados) de uma tabela do banco de dados. Para acessar os atributos so criados os
mtodos pblicos get e set (encapsulamento de atributos).
Como as classes de Entidade so utilizadas por todas as camadas da aplicao, elas pertencem
tanto s camadas de Modelo quanto de Controle (embora ela esteja bem mais relacionada ao
modelo). Por essa razo, deve-se colocar as classes de entidade no prprio namespace (sugesto
de nome: entidade);
Apresentao do Trabalho
O trabalho dever ser apresentado no laboratrio por todos integrantes do grupo. A ausncia de
algum integrante (sem uma justificativa vlida) acarretar em penalizao na nota do mesmo.
Avaliao
Todo o cdigo deve estar devidamente comentado e bem organizado. A qualidade e legibilidade
do cdigo fonte ser avaliada. Trabalhos usando ms prticas de programao como memory
leaks, Violao de Memria, entre outros sero penalizados (mesmo que funcionem). Trabalhos
plagiados, seja total ou parcial, recebero nota zero (ambos trabalhos).
Dvidas
Qualquer dvida quanto ao enunciado do trabalho, basta comunicar com o monitor atravs de
seu email.

Atualizao 03/10: Adicionado wxWidgets como uma das bibliotecas permitidas para
criao da interface grfica.

MySQL um banco de dados comercial que pode ser usado para fins pessoais ou acadmicos
livremente, est disponvel em <http://www.mysql.com>.

Você também pode gostar