Você está na página 1de 79

UNIVERSIDADE DO PLANALTO CATARINENSE

DEPARTAMENTO DE CINCIAS EXATAS E TECNOLGICAS


CURSO DE SISTEMAS DE INFORMAO
(BACHARELADO)







THIAGO LUIZ NUNES DE SOUZA



SISTEMA DE INFORMAO PARA PACKI NG HOUSE










LAGES (SC)
2011
THIAGO LUIZ NUNES DE SOUZA





SISTEMA DE INFORMAO PARA PACKI NG HOUSE



Trabalho de Concluso de Curso
submetido Universidade do Planalto
Catarinense para obteno dos crditos
de disciplina com nome equivalente no
curso de Sistemas de Informao -
Bacharelado.



Orientao: Prof. Sabrina Bet Koerich,
M.Sc.






LAGES (SC)
2011

THIAGO LUIZ NUNES DE SOUZA

SISTEMA DE INFORMAO PARA PACKI NG HOUSE

ESTE RELATRIO, DO TRABALHO
DE CONCLUSO DE CURSO, FOI
JULGADO ADEQUADO PARA
OBTENO DOS CRDITOS DA
DISCIPLINA DE TRABALHO DE
CONCLUSO DE CURSO, DO 8.
SEMESTRE, OBRIGATRIA PARA
OBTENO DO TTULO DE:

BACHAREL EM SISTEMAS DE
INFORMAO


Lages (SC), Dia de Ms de Ano (data da defesa)


Prof.Sabrina Bet Koerich, M.Sc.
Orientador
Prof. Alexandre Perin de Souza, M.Sc.
Co-Orientador


BANCA EXAMINADORA:



Prof. Willian Padilha, Bel.
UNIPLAC
Prof. Claiton Camargo, Bel.
UNIPLAC



Prof. Sabrina Bet Koerich, M.Sc.
Professor de TCC
Prof. Sabrina Bet Koerich, M.Sc.
Coordenador de Curso































Dedico este trabalho para minha famlia e
meus amigos, onde todos de alguma forma
me ajudaram a concluir esse trabalho.


























Agradeo em especial ao Jorge Hamilton
de Souza pelo incentivo e pelas ideias
propostas.

Agradeo a minha famlia, meus amigos,
minha namorada e todas as pessoas que
estiverem sempre presentes nas minhas
conquistas.































Muitas pessoas devem a grandeza de suas
vidas aos problemas e obstculos que
tiveram que vencer.
(Baden Powell)
LISTA DE ILUSTRAES
FIGURA 1 - Leiaute Packing House ......................................................................... 19
FIGURA 2 - Arquitetura MVC .................................................................................. 23
FIGURA 3 - Aplicaes em trs camadas ................................................................. 24
FIGURA 4 - Tela padro do Scaffolding. .................................................................. 25
FIGURA 5 - Tela com alerta de Validao ................................................................ 26
FIGURA 6 - Pgina de Download CakePHP 1.3.8 ................................................... 28
FIGURA 7 - Estrutura de Pasta CakePHP. ................................................................ 29
FIGURA 8 - Modelagem do Banco de Dados ........................................................... 38
FIGURA 9 - Estrutura banco de dados ...................................................................... 42
FIGURA 10 - Estrutura de pasta framework CakePHP ............................................. 43
FIGURA 11 - Tela do framework informando sobre a conexo com o banco. ......... 45
FIGURA 12 - Tela principal editada .......................................................................... 47
FIGURA 13 - Tela referente ao arquivo index.ctp .................................................... 52
FIGURA 14 - Tela referente ao arquivo view.ctp ...................................................... 53
FIGURA 15 - Tela referente arquivo add.ctp ............................................................ 55
FIGURA 16 - Tela apresentao referente arquivo edit.ctp ...................................... 56
FIGURA 17 - Tela de validao de dados ................................................................. 57
FIGURA 18 - Aplicaes em trs camadas ............................................................... 64
FIGURA 19 - Tela padro do Scaffolding. ................................................................ 64
FIGURA 20 - Tela com alerta de Validao .............................................................. 65
FIGURA 21 - Tela pasta CakePHP descompactada .................................................. 67
FIGURA 22 - Tela informando dados CakePHP ...................................................... 67
FIGURA 23 - Tela de index dos cadastros de noticias .............................................. 69
FIGURA 24 - Tela de insero de noticias ................................................................ 69
FIGURA 25 - Tela de edio de notcias ................................................................... 70
FIGURA 26 - Aviso ao excluir notcia ...................................................................... 70

QUADRO 1 - Cdigo arquivo Scaffolding ................................................................ 25
QUADRO 2 - Codificao Validao de dados ......................................................... 26
QUADRO 3 - Requisitos manter cadastro de Produtores .......................................... 35
QUADRO 4 - Requisitos manter cadastro de compradores ....................................... 35
QUADRO 5 - Requisitos manter cadastro de funcionrios ....................................... 35
QUADRO 6 - Requisitos manter cadastro de tipos. ................................................... 36
QUADRO 7 - Requisitos manter cadastro de grupos. ............................................... 36

QUADRO 8 - Requisitos manter cadastro de tamanhos. ........................................... 36
QUADRO 9 - Requisitos manter cadastro de entradas. ............................................. 36
QUADRO 10 - Requisitos manter cadastro de quantidade de entrada ...................... 36
QUADRO 11 - Requisitos manter cadastro de processamento .................................. 37
QUADRO 12 - Requisitos manter cadastro de quantidade de processamento .......... 37
QUADRO 13 - Script gerado pela ferramenta DBDesigner4 .................................... 41
QUADRO 14 - Alterao cdigo inflector.php.......................................................... 44
QUADRO 15 - Configurao com o banco de dados ................................................ 45
QUADRO 16 - Trecho de cdigo layout pgina principal ......................................... 46
QUADRO 17 - Codificao arquivo funcionario.php ............................................... 47
QUADRO 18 - Codificao de index do arquivo funcionarios_controller.php ......... 48
QUADRO 19 - Codificao de view do arquivo funcionarios_controller.php .......... 48
QUADRO 20 - Codificao de insert do arquivo funcionarios_controller.php ......... 48
QUADRO 21 - Codificao de edit do arquivo funcionarios_controller.php ........... 49
QUADRO 22 - Codificao de edit do arquivo funcionarios_controller.php ........... 49
QUADRO 23 - Codificao arquivo index.ctp .......................................................... 50
QUADRO 24 - Trecho de cdigo do arquivo view.ctp .............................................. 52
QUADRO 25 - Cdigo do arquivo add.ctp ................................................................ 54
QUADRO 26 - Cdigo do arquivo edit.ctp ................................................................ 55
QUADRO 27 - Validao de dados arquivo funcionario.php ................................... 57
QUADRO 28 - Cdigo arquivo Scaffolding .............................................................. 64
QUADRO 29 - Codificao Validao de dados ....................................................... 65
QUADRO 30 - Codificao da configurao com banco de dados ........................... 67
QUADRO 31 - Script criao tabela de posts ............................................................ 68
QUADRO 32 - Codificao arquivo post.php ........................................................... 68
QUADRO 33 - Codificao arquivo posts_controller.php ........................................ 69



LISTA DE ABREVIATURAS E SIGLAS
ACL - Access Control List
ACO - Acess Control Object
AJAX - Asynchronous Javascript and XML
ARO - Acess Object Request
CRUD - Create, Retrieve, Update Delete
HTML - HyperText Markup Language
HTTP - HyperText TranferProtocol secure
JSON - JavaScript Object Notation
MVC - Model View Controller
MIT - Massachusetts Institute of Technology
ODBC - Open Database Connectivity
ORM - Object-relational mapping
PHP - Hypertext Preprocessor
RSS - Really Simple Syndication
SI - Sistemas de Informao
SMTP - Simple Mail Tranfer Protocol
SQL - Structured Query Language
TI - Tecnologia de Informao
URL - Uniform Resource Locator
XML - Extensible Markup Language


RESUMO
Este trabalho teve como principal objetivo implantar um sistema de informao dentro
de um Packing House, local onde se destina a recepo, classificao, estocagem e
expedio de frutos, mais especificamente para mas. Produtores autnomos e
microempresas no segmento agrcola encontram dificuldades em gerenciar e
armazenar informaes, causando assim, mais contrataes de pessoas, um custo alto e
informaes coletadas atrasadas comparadas ao atual, pois o recebimento, o
processamento e a expedio dos frutos nunca param. Para solucionar esse problema,
implantar um sistema de informao seria ideal, pois assim reduziria os custos do
controle do estoque e informaes coletadas em tempo real. Porm, gestores desse
segmento encontram dificuldades em encontrar tecnologias voltadas para esse ramo,
tendo como base informaes disponibilizadas por Jorge Hamilton de Souza, Tcnico
Agrnomo e gerente do Packing House que foi estudado. Tendo como principal
objetivo reduzir custos e simplificar o gerenciamento e armazenamento de
informaes, foi realizado um levantamento com base nesses requisitos para que fosse
possvel implementar um sistema de informao. A implementao do sistema foi
desenvolvida com a linguagem PHP juntamente com um framework chamado
CakePHP, que auxilia na codificao do sistema, foi usado como armazenamento de
dados o banco de dados MySQL juntamente com o servidor Apache.


Palavras-chave:
PHP, Packing House; tomada de deciso, controle de estoque.

ABSTRACT
This work aimed to establish an information system within a packing house, where
they intended to reception, classification, storage and shipment of fruit, more
specifically for apples. autonomous producers and micro enterprises in the agricultural
sector find it difficult to manage and store information, thus causing more hiring of
people, a cost high and late information collected compared to the current, because the
receipt, processing and shipment of fruits never stop. To solve this problem,
implement an information system would be ideal, as well as reduce the costs of
inventory control and information collected in real time. However, managers of that
segment are difficulties in finding technologies for this branch, based on information
provided by George Hamilton de Souza, Technical Agricultural Engineer and manager
of the Packing House was studied. with the main objective to reduce costs and
simplify management and storage information, a survey was conducted based on these
requirements for could implement an information system. The implementation of the
system was developed with the PHP language and a framework called CakePHP which
assists in the coding system, was used as data storage MySQL database along with
Apache server.


Keywords:
PHP, Packing House; tomada de deciso, controle de estoque.


SUMRIO
1 INTRODUO ........................................................................................................ 13
1.1 Apresentao ........................................................................................................... 13
1.2 Descrio do problema ............................................................................................ 14
1.3 Justificativa .............................................................................................................. 14
1.4 Objetivo geral .......................................................................................................... 15
1.5 Objetivos especficos ............................................................................................... 16
1.6 Metodologia ............................................................................................................. 16
1.7 Cronograma .............................................................. Erro! Indicador no definido.
2 PACKING HOUSE .................................................................................................. 18
2.1 Caractersticas .......................................................................................................... 18
2.1.1 Recepo .......................................................................................................................... 19
2.1.2 Estocagem ........................................................................................................................ 19
2.1.3 Processamento ................................................................................................................. 19
2.1.4 Estocagem ........................................................................................................................ 20
2.1.5 Expedio ........................................................................................................................ 20
2.2 Tecnologia de Informao ....................................................................................... 20
3 FRAMEWORK CAKEPHP .................................................................................... 22
3.1 Definio ................................................................................................................. 22
3.2 Caractersticas principais ......................................................................................... 23
3.2.1 Model View Controller .................................................................................................... 23
3.2.2 Licena MIT ..................................................................................................................... 24
3.2.3 Scaffolding e Bake Console ............................................................................................. 24
3.2.4 Validao de dados ......................................................................................................... 25
3.3 Recursos necessrios para seu uso .......................................................................... 26
3.3.1 Hardware ......................................................................................................................... 26
3.3.2 Software ........................................................................................................................... 27
3.4 Instalao e configurao ........................................................................................ 27
3.4.1 Instalao ........................................................................................................................ 28
3.4.2 Configurao ................................................................................................................... 29
3.5 Principais Mdulos .................................................................................................. 30
3.5.1 Helper .............................................................................................................................. 30
3.5.2 Componentes de Segurana............................................................................................. 31
3.6 Concluses ............................................................................................................... 32

4 LEVANTAMENTO DE REQUISITOS/MODELAGEM .... ERRO! INDICADOR
NO DEFINIDO.
4.1 Levantamento de Requisitos .................................................................................... 34
4.2 Modelagem .............................................................................................................. 38
5 CONSIDERAES FINAIS ................................................................................... 40
REFERNCIAS BIBLIOGRFICAS ...................................................................... 61
APNDICES ................................................................................................................ 62


13
1 INTRODUO
1.1 Apresentao
A cultura de cultivo de ma forte referncia na regio da serra catarinense,
sendo um dos pontos principais de renda em algumas das cidades. Para poder
potencializar a fruta e conseguir melhores preos no momento da venda so
necessrias cmaras frias para armazenar as frutas e mquinas para fazer sua
classificao, em um processo chamado de Packing House.
Empresas de Packing House vm utilizando tcnicas inadequadas para o
auxlio no controle do estoque das frutas, e, com isso, acabam tornando os resultados
obtidos inconsistentes, gerando trabalho desnecessrio.
Dessa maneira, foi idealizado um projeto para gerenciar estes processos, e
para sua realizao foi escolhido a linguagem PHP (PHP Hypertext Preprocessor),
juntamente com o framework CakePHP, como banco de dados foi utilizado o MySQL
e o servidor Web Apache. Essas ferramentas foram escolhidas por serem de cdigo
livre e necessitarem poucos recursos de hardware para operarem.
O desenvolvimento deste trabalho ficou dividido em 6 captulos. No captulo 1
foi exposto o proposito do projeto juntamente com os objetivos e demais informaes
para o desenvolvimento restante do trabalho. No captulo 2 foi apresentado qual o
objetivo de um Packing House, contendo tambm processos decorrente da logica de
negocio do Packing House, em seguida, no captulo 3, foi abordado sobre o framework
CakePHP, qual foi base para o desenvolvimento do sistema. No captulo 4 foi
realizada a modelagem do sistema, juntamente com o levantamento de requisitos. No
captulo 5 foi demonstrado com cdigos e figuras ilustrativas como o sistema foi
14
desenvolvido. Por fim no captulo 6 foi apresentados as consideraes finais do
trabalho.
1.2 Descrio do problema
O controle de estoque uma necessidade de qualquer ramo que contenha
armazenamento de produtos, e isso no diferente nos sistemas de Packing House.
Alm da necessidade do controle de estoque fsico, essencial um controle especfico
para processamento de mas que passam por uma mquina classificadora. Sem este
controle h perda de informaes, que impossibilita os gestores de gerenciar a
quantidade de fruta estocada e processada.
A falta de um sistema funcional dificulta o controle de estoque de mas
dentro do Packing House, levando em considerao que esse controle deve ser
realizado desde a recepo do fruto, o armazenamento dos mesmos, posteriormente
passando pela classificao e por fim a expedio, ocasionando alto custo.
1.3 Justificativa
A utilizao de Tecnologia de Informao est cada vez mais presente em
qualquer rea de negcio, facilitando toda a troca e apresentao de informaes para
os usurios do sistema, e at mesmo auxiliando na segurana do sistema, com
caractersticas, como backup dos dados inseridos e restries de acesso.
O estoque de uma empresa todo bem fsico produzido ou em fase de
produo e os bens necessrios para a produo, direta ou indiretamente, que so
armazenados por um determinado espao de tempo (PORTALBRASIL, 2004).
Segundo Martins (2000), o estudo do papel dos estoques nas empresas
to antigo quanto o estudo da prpria Administrao, e sempre foi alvo da ateno dos
gerentes. O estoque de uma empresa quer dizer dinheiro, e por esse motivo deve-se
tomar cuidados para que a empresa no tenha um estoque demasiadamente grande e
tampouco um estoque escasso, evitando um volume de capital empregado parado e
15
tambm no deixando acontecer falta do produto.
A administrao do controle de estoque uma das reas que mais
roubam tempo dos profissionais, onde se costumava gerar dados inconsistentes,
causando a contratao de mais pessoas, para que pudessem amenizar falhas geradas
por falta de um sistema para realizar esse controle.
A deficincia na gerao de informaes do estoque e a necessidade de
uma ferramenta no auxilio desse controle, est presente em um Packing House, onde
preciso recolher informaes sobre quantidades processadas, quantidades produzidas,
que tipo de frutas, entre outras informaes essenciais.
O especialista do caso Jorge Hamilton de Souza, diz que o sistema viabiliza
todo o processo administrativo do Packing House de beneficiamento de frutas com
foco principal no controle de recebimento de frutas; classificao/produo de rea e
logstica para o processamento de frutas de produo prpria e tambm na prestao
de servios para terceiros.
Segundo o especialista do caso existe uma escassez de sistemas focados para
esse ramo de negcio e que seria importante o desenvolvimento do mesmo. Surgindo a
partir do desenvolvimento de sistema uma elaborao de testes e hipteses variadas
para encontrar falhas possveis, registrando sugestes para as melhorias do sistema.
Uma vez que a deteco de erros um propulsor importante do teste
software, ela responsvel pelo aumento no interesse no desenvolvimento de conjunto
de dados de testes adequados para sensibilizar erros (PETERS e PEDRYCZ, 2001).
Diante do exposto, percebe-se que h a necessidade de um sistema de
informao, que possa ajudar a controlar o estoque, gerando relatrios que auxiliem
nas tomadas de decises e oferea segurana dos dados, entre outras funes que so
necessitadas pelos usurios.
1.4 Objetivo geral
Desenvolver um aplicativo que auxilie no controle e monitoramento do
Packing House, oferecendo relatrios para ajuda em tomadas de decises.
16
1.5 Objetivos especficos
a) Identificar a lgica de negcio presente em Packing House;
b) Definir a arquitetura do sistema;
c) Identificar funcionalidades do framework CakePHP;
d) Implementar o sistema utilizando as funcionalidades do framework;
e) Implantar o sistema;

1.6 Metodologia
O trabalho inicia com a identificao da lgica de negcio do sistema. Para
isso, foi realizada uma entrevista com o Tcnico Agrnomo e Gerente do Packing
House Jorge Hamilton de Souza. Foi aplicado um questionrio para tomar cincia
sobre, tendo como foco em perguntas sobre os principais problemas enfrentados e
quais resultados iriam ajudar nas tomadas de decises do negcio.
Depois da lgica de negcio estar identificada, foi feito a definio da
arquitetura do sistema, como padro de arquiteturas foi estabelecida a Cliente-
Servidor, qual designa separar computadores clientes de servidores, ligados por uma
rede que de uma maneira o varias instancias de clientes possam requisitar informaes
ao servidor, recebendo assim uma resposta.
No prximo passo foi feito um estudo aprofundado no framework CakePHP
na verso 1.3.8, foi levantado funcionalidades que o framework disponibiliza e que
pudesse de alguma forma auxiliar no desenvolvimento do sistema.
O passo posterior foi codificao do sistema. A linguagem usada PHP
juntamente com o framework CakePHP, utilizando o banco de dados MySQL e o
servidor web Apache. Estas ferramentas foram escolhidas por trabalharem de forma
integrada, serem de cdigo livre e precisarem de poucos recursos de hardware
(memria, processador, etc.) para operarem.
O trabalho foi concludo com a instalao e implantao do sistema no
17
cliente final para validao do mesmo.
Por fim, um relatrio e um artigo foram desenvolvidos.

18
2 PACKING HOUSE
A quantidade de frutos gerados em uma colheita no instantaneamente
consumida pela populao, precisa-se de um ambiente preparado para o
armazenamento, apresentando condies adequadas de conservao dos mesmos,
fazendo com que a sada dos frutos possa ser administrada conforme a necessidade.
Esse ambiente chamado de Packing House.
Este captulo ter como objetivo mostrar o que um Packing House,
apresentando tambm seus objetivos principais, cada etapa percorrida pelos frutos, os
problemas enfrentados e o que a Tecnologia de Informao pode acrescentar.
2.1 Caractersticas
Packing House (casa de embalagem) tem como principal objetivo receber o
fruto, armazenar em uma cmara fria com condies adequadas para que no perca a
qualidade, passando depois pelo processamento, onde definido a qual grupo o fruto
pertence e para que tipo de mercado ele deve ser enviado, cobrando assim pelos
servios prestados.
A qualidade do fruto para comercializao depende diretamente de todos os
processos que englobam a colheita at a ps-colheita. Segundo Chitarra (1994), as
caractersticas de qualidade dos frutos so resultantes da relao de fatores
genticos, climticos, estado de maturao e tratamentos ps-colheita.
Conforme Awad (1993), o intervalo da colheita entre a colheita e a
estocagem deve ser o menor possvel, aumentando assim a longevidade da vida ps-
colheita dos frutos.
19
Os principais estgios que o fruto percorre so: recepo, estocagem,
processamento, estocagem e por final a expedio, conforme mostra a figura 1.

FIGURA 1 - Leiaute Packing House

A Figura 1 apresenta o leiaute do Packing House estudado, ilustrando as
etapas por onde o fruto vai passar.
2.1.1 Recepo
Na recepo onde os frutos chegam da colheita, nessa etapa so coletadas
informaes de quantidade, tipo, produtor, entre outras informaes, aps essa coleta
feito a estocagem dos frutos.
2.1.2 Estocagem
Nesta etapa feito o armazenamento dos frutos, mantendo-se sempre
organizado por produtor e tipo, este ambiente deve manter a qualidade interna e
externa dos frutos.
2.1.3 Processamento
No processamento os frutos so retirados da estocagem e lavados para a
esteira, onde feito a classificao, podendo assim definir qual o valor para ser
20
comercializado. A classificao se resume separando pelos seguintes requisitos:
Tipo: Gala, Fuji, etc;
Tamanho: P, M, G;
Categoria: Cat1, Cat2, Cat3, Industrial;
2.1.4 Estocagem
Novamente o processo de estocagem acionado, porm, esses frutos so
armazenados em outro ambiente, pronto para serem embalados e expedidos.
2.1.5 Expedio
A expedio a ltima etapa que os frutos percorrem dentro do Packing
House, onde feito o carregamento dos mesmos e enviados para os compradores.
2.2 Tecnologia de Informao
Dentro de qualquer empresa dados so gerados frequentemente, e esses
dados devem ser armazenados, para posteriormente transforma-los em informaes, e
poder ter uma anlise detalhada dos mesmos, oferecendo assim um controle eficaz e
tomadas de decises em cima de informaes geradas a partir de fatos.
Dentro de um Packing House se tornou indispensvel tecnologias que
auxiliem no controle e administrao do mesmo, essas tecnologias so chamadas de
Tecnologia de Informao (TI). Segundo Branco(2007), a TI a parte fundamental dos
sistemas de informao (SI) presentes nas atividades de negcio de uma organizao,
cita tambm que SI no apenas composto por um computador, mas conta tambm
com tecnologia, pessoas e organizaes.
Para que funcionrios registrassem todas as entradas e sadas de cada
processo em um papel, e posteriormente fosse feito um controle de estoque geral e um
rastreamento de cada produtor, gerando quantidade de frutos estocados, processados e
expedidos, para s assim gerar informaes do tipo: rendimento de equipe, o quanto
21
cobrar pelos servios, quais decises a serem tomadas, estava se tornando uma
atividade com um custo alto, inconsistncia nos dados, e dificuldade para
armazenamento dessas informaes.
A SI permite que tarefas complexas se tornem algo simples, seria possvel
manter um controle atualizado do estoque, de quantidade processada, quais as
caractersticas de cada lote processado, entre outras informaes. Implantando um SI
nessa estrutura, tornaria todos os processos com um custo menor, consistncia nos
dados e facilidade para armazenamento informaes, facilitando a administrao e
tomadas de decises dos gestores.
2.3 Concluses
Neste captulo foram apresentadas as principais caractersticas de um
Packing House, explanando a importncia do mesmo para a qualidade final dos frutos.
Foi apresentado tambm as dificuldades para o controle de informaes e os benefcios
que um Sistema de Informao pode fornecer.






22
3 FRAMEWORK CAKEPHP
Nesse captulo ser apresentado o cakePHP, o framework escolhido para ser
utilizado neste trabalho, quais suas principais caractersticas, vantagens e desvantagens
em relao a outros frameworks similares, alguns de seus principais mdulos e, por
fim, seu funcionamento e processo bsico de implantao.
3.1 Definio
Em 2005 Michal Tatarynowicz desenvolveu um framework simples em PHP,
chamando-o de Cake. Posteriormente percebendo que o framework tinha uma base
interessante, publicou o cdigo sob a licena Massachusetts Institute of Technology
(MIT) onde agregou ao seu trabalho uma comunidade de programadores que mantm
o framework at hoje chamado de CakePHP.
CakePHP um framework gratuito de cdigo aberto, desenvolvido em PHP
baseado nos conceitos de Ruby on Rails. O objetivo principal permitir o
desenvolvimento robusto de aplicaes para qualquer nvel de programadores e
deixando de lado a monotonia tradicional da implementao(COOKBOOK, 2010).
CakePHP traz consigo uma equipe de desenvolvedores e uma grande
comunidade, agregando e potencializando o crescimento do framework. O framework
usa design patterns conhecidos como Model View Controller (MVC) e Object
Relational Mapping ( ORM) com conveno sobre paradigma da configurao. A
vantagem maior do uso dos padres permitir, reduo d o custo do desenvolvimento,
bem como ajudar os desenvolvedores a escreverem menos cdigos, facilitando a
manuteno (CAKEPHP, 2010).
23
3.2 Caractersticas principais
Nesta seo sero apresentadas as principais caractersticas do CakePHP,
bem como seu funcionamento geral e a definio de sua utilidade para um projeto
desenvolvido nesse framework.
3.2.1 Model View Controller
Segundo Gonalves (2007) MVC um padro de projeto que separa uma
aplicao em trs partes distintas, conforme mostra a Figura 2.

FIGURA 2 - Arquitetura MVC
(Fonte: LEMOS, 2009)
A Figura 2 apresenta o padro de projeto MVC. O passo 1 apresenta um
browser que faz requisio para o servidor web. O controller identifica qual regra de
negcio acionar ou usar (ver passo 2 da Figura 2). O controller utiliza o model para
ter acesso aos dados da aplicao, em seguida no passo 3 o controller encaminha os
dados para a view, no passo 4. A view formata a apresentao e retorna para o browser.
Como o framework CakePHP utiliza o padro de projeto MVC, ele prope
uma diviso de camadas tornando a lgica de negcio separada da interface de
apresentao para o usurio, separando tambm do fluxo de informao. Isto facilita o
24
desenvolvimento e a manuteno do cdigo do aplicativo, pois se poupa esforos e
tempo de desenvolvimento quando manutenes adaptativas e corretivas necessitam
ser realizadas.
Segundo Macoratti (2002), a chave para a independncia entre os
componentes a organizao em camadas e esta independncia visa atingir eficincia,
escabilidade, reutilizao e facilidade de manuteno.

FIGURA 3 - Aplicaes em trs camadas
(Fonte: MACORATTI, 2002)
A Figura 3 exemplifica a separao entre a interface de apresentao
representada pela lgica de apresentao, a lgica de negcio, e o fluxo de informao
que esta representada pelo acesso a dados, permitindo assim que qualquer parte possa
ser alterada independentemente (MACORATTI, 2002).
3.2.2 Licena MIT
O CakePHP distribudo sob a licena MIT. MIT, uma licena de
programas de computadores usada em softwares de cdigo livre, criada pelo
Massachusetts Institute of Technology. Ela Permite a utilizao, a cpia, a
modificao, a distribuio e a venda do software, com a condio que a nota de
copyright seja conservada em todas as cpias, e que o nome MIT no seja utilizado
como publicidade sem permisso escrita previa (MARTINI, 2000).
3.2.3 Scaffolding e Bake Console
Outra importante caracterstica o Scaffolding de aplicao. E ela permite ao
desenvolvedor definir e criar uma aplicao bsica com funcionalidades Create
Retrieve Insert Delete (CRUD), onde o usurio poder adicionar, selecionar, atualizar
e deletar objetos a partir de uma base de dados. No CakePHP essa tcnica possibilita
25
tambm para que os desenvolvedores definam as relaes entre os objetos, podendo
criar e destruir essas relaes. Mas o Scaffolding apenas para aplicativos simples,
sem permitir customizao da interface de apresentao.


FIGURA 4 - Tela padro do Scaffolding.
QUADRO 1 - Cdigo arquivo Scaffolding
1
2
3
4
5

<?php
Class AtividadesController extends AppController {
Var $scaffold;
}
?>

A Figura 4 ilustra um exemplo de aplicao CRUD, gerada pelo Scaffolding.
No Quadro 2 mostra, a simplicidade da codificao do arquivo de controle de
atividades para a gerao da interface grfica ilustrada na Figura 4.
Para uma maior produtividade sem o uso do Scaffolding que no aceita
alteraes, CakePHP conta com o Bake console, onde o desenvolvedor necessita
apenas informar parmetros sobre a base de dados, que o bake gera toda a codificao
dos arquivos MVC, permitindo ainda as customizaes conforme preciso no
desenvolvimento.
3.2.4 Validao de dados
Em qualquer aplicao a validao de dados um fator importante. Ela
consiste em verificar se os dados digitados respeitam a lgica de negcio da aplicao.
Por exemplo, limitar que algum campo aceite apenas um tipo de valor, ou ento que
esse campo no aceite valor vazio(COOKBOOK, 2010).
26

FIGURA 5 - Tela com alerta de Validao
QUADRO 2 - Codificao Validao de dados
1
2
3
4
5

7
<?php
class Atividade extends AppModel {
var $name = 'Atividade';

public $validate = array('acao' => array('rule' => 'notEmpty',
'message' => 'Campo deve ser preenchido!'));
}

A Figura 5 ilustra alerta de validao, levando em considerao que foi
realizada uma tentativa de salvar os dados sem preencher o campo Acao. O quadro 3
a codificao do model da Atividade, na linha 5 mostra como as regras de validao
so adicionadas, criando um array $validate com o nome do campo, o tipo de regra e
a mensagem a ser apresentada para o usurio.
3.3 Recursos necessrios para seu uso
Para o CakePHP funcionar e obter um melhor desempenho de usabilidade e
tambm de velocidade, necessrio ter alguns recursos tanto de hardware quanto de
software.
3.3.1 Hardware
Como o sistema foi executado em um ambiente web. O nico recurso
necessrio para o lado cliente uma mquina que rode um navegador de internet
compatvel. J para o servidor da aplicao o mnimo para um desempenho
27
considervel :
Memria RAM de 512 Mb ou mais;
Processador Intel Pentium IV, AMD Athlon 64 ou superior;
50 Gb de Disco Rgido ou mais;
3.3.2 Software
Alm dos recursos de hardware, o CakePHP necessita de alguns software.
No lado cliente necessrio apenas um navegador, j no servidor da aplicao, os
seguintes recursos so obrigatrios:
Servidor HTTP. Indicado Apache com mod_rewrite.
PHP 4.3.2 ou superior.
O CakePHP no necessita obrigatoriamente de um banco de dados para
funcionar. Entretanto, a maioria das aplicaes desenvolvidas utilizam uma base de
dados. O CakePHP da suporte para vrios sistemas de gerencia de bancos de dados,
so:
MySQL (4 ou superior);
PostgreSQL;
Firebird DB2;
Microsoft SQL Server;
Oracle;
SQLite;
ODBC;
ADOdb;
3.4 Instalao e configurao
Nesta seo, sero apresentados procedimentos adequados para a instalao e
alteraes para a configurao correta.
28
3.4.1 Instalao
O primeiro passo a ser executado fazer o download do CakePHP 1.3.8. A
verso mais atual e estvel pode ser obtida em
HTTPS://github.com/cakephp/cakephp/downloads.

FIGURA 6 - Pgina de Download CakePHP 1.3.8
(Fonte: GITHUB, 2011).
A Figura 6 mostra a pgina de downloads do site do GitHub, onde encontra-
se o link para fazer o download do arquivo.
O prximo passo extrair o arquivo para uma pasta no servidor Apache. No
Linux usa-se extrair para /var/www ou /srv/http, enquanto, c:/apache/htdocs para
Windows(COMPJUNIOR, 2011).
29

FIGURA 7 - Estrutura de Pasta CakePHP.
(Fonte: COMPJUNIOR, 2011).
Na Figura 7 mostra a estrutura de pasta que o CakePHP assume depois de
extrado para a pasta raiz do seu servidor.Com o CakePHP instalado, existem algumas
configuraes que devem ser feitas, para torn-lo pronto para o desenvolvimento de
aplicaes.
3.4.2 Configurao
A configurao consiste em executar duas alteraes dentro do arquivo de
configurao do Apache. A primeira liberar o mod_rewrite, qual responsvel pela
reescrita de URL`s em pginas web, acessando o arquivo httpd.conf. No arquivo
http.conf basta localizar a linha #LoadModule rewrite_module
modules/mod_rewrite.so, e retirar o comentrio dessa linha (extrai-se o smbolo #).
Ainda dentro do mesmo arquivo httpd.conf contm a propriedade AllowOverride,
30
que pode ser definida como none ou all, preciso alterar AllowOverride none
para: AllowOverride All, pois se a propriedade AllowOverride estiver como none o
Apache ir bloquear a reescrita de configuraes do CakePHP sobre a padro do
Apache, logo para poder trabalhar com CakePHP, ter que habilitar AllowOverride
para All.
3.5 Principais Mdulos
3.5.1 Helper
Somada as demais caractersticas do CakePHP, contm um componente que
ajuda na criao das views, chamado de Helper. Esse componente facilita a formatao
de textos, horrios e nmeros alm de agilizar o desenvolvimento de funes com
Ajax. Entre os Helpers que o CakePHP disponibiliza por padro tem-se:
Ajax Usado em conjunto com a biblioteca Javascript Prototype para criar
funcionalidade Ajax nas views. Contm mtodos de atalho para recursos de
arrastar/soltar, formulrios e links Ajax, observadores e mais.
Cache Usado pelo ncleo do CakePHP para fazer cachs de contedo das views.
Form Cria formulrios HTML e elementos de formulrios auto preenchveis e
que manipulam problemas de validao.
Html Mtodos de convenincia para a criao de marcaes bem-formadas em
HTML. Imagens, links, tabelas, tags de cabealho e mais.
Javascript Usado para escapar valores para uso em scripts JavaScript, escrever
dados para objetos JSON e formatar blocos de cdigo.
Number Formatao de nmeros e moedas.
Paginator Paginao de dados do model e ordenao.
Rss Mtodos de convenincia para exibio de dados XML para criao de
feeds RSS.
Session Acesso a escrita de variveis de sesso nas views.
Text Criao automtica de links (smart linking), colorao de sintaxe, truncagem
31
de palavras.
Time Deteco de proximidade, formatao para strings(Hoje, 10:30 am) e
converso de fusos horrios.
Xml Mtodos de convenincia para criao de cabealhos e elementos
XML.(COOKBOOK, 2010)
3.5.2 Componentes de Segurana
Por padro o CakePHP oferece alguns componentes embutidos, esses
componentes trazem mtodos capazes de tratar tarefas comumente usadas, desde a
parte de segurana at mesmo funes para envio de emails. Esta seo se dedica a
apresentar estes componentes.
3.5.2.1 Acess Control List
Access Control List (ACL) basicamente uma lista de permisso, para definir o
que cada objeto ter de permisso para acessar. Isto, facilita a manuteno e o
gerenciamento de acessos de aplicaes. Deve-se lembrar de que ACL no nenhum
tipo de autenticao (IBM ,2009).
ACL composto por Access Object Request (ARO) e por Acess Control Object
(ACO):
ARO: o objeto que faz a requisio para acessar a aplicao;
ACO: o objeto de controle que determina o que cada ARO poder acessar;
3.5.2.2 Auth
Um fator essencial em uma aplicao web autenticao de usurios,
tornando a aplicao mais confivel. A maneira que o CakePHP trata autenticao
com o componente Auth, podendo ser mesclado com o componente ACL, criando
nveis complexos de acessos(COOKBOOK, 2010).
3.5.2.3 Cookie
32
Cookies so informaes trocadas entre o servidor e o navegador,
armazenando um arquivo texto no computador do usurio, mantendo a persistncia de
sesses HTTP.
3.5.2.4 Email
O componente email responsvel funo de envios de email de aplicaes
em CakePHP, enviando mensagens em formato texto, HTML ou ambos, suportando
anexo de arquivos juntamente com algumas configuraes de cabealhos. Esse
componente por ser enviado por servidor Simple Mail Tranfer Protocol
(SMTP)(COOKBOOK, 2010).
3.5.2.5 RequestHandler
As informaes contidas nas requisies HTTP feitas para a aplicao
podem ser capturadas pelo componente RequestHandler. Podendo tambm obter
informaes adicionais do cliente(COOKBOOK, 2010).
3.5.2.6 Security
O componente Security tem como funcionalidade gerenciar requisies
HTTP autenticadas, por padro quando alguma solicitao for bloqueada pelo
Security, apresentar para o usurio um pgina com erro 404(COOKBOOK, 2010).
3.5.2.7 Session
Para a persistncia de dados do cliente entre as requisies usado o
componente Session, funcionando como encapsulador da varivel $_SESSION,
oferecendo tambm mtodos relacionados a mesma(COOKBOOK, 2010).
3.6 Concluses
Neste captulo foram explanadas informaes sobre o framework CakePHP,
33
apresentando como se deu inicio ao framework, como se deve proceder a instalao e
configurao, apresentando tambm, quais as suas principais caractersticas e mdulos.
Explanando suas vantagens e desvantagens, explicando porque o framework CakePHP
adequado para o desenvolvimento dessa aplicao.

34
4 MODELAGEM DO SISTEMA
Neste capitulo ser apresentado a modelagem do sistema, como ao todo a
produo de requisitos e o diagrama de caso de uso, apresentando o que o sistema deve
conter e suas funcionalidades.
4.1 Produo de Requisitos
Neste tpico ser explanado a produo de requisitos, qual se designa em
obter informaes e documentar as mesmas.
4.1.1 Descrio geral do sistema
O sistema tem como objetivo auxiliar no controle de informaes, sabendo
que funcionalidades especficas foram definidas pelo especialista de caso.
4.1.2 Elicitao de Requisitos
Elicitao de requisitos relaciona-se a obteno de requisitos dos softwares,
das tcnicas utilizadas pela elicitao foram utilizadas duas delas, uma delas foi a
entrevista, onde consiste em perguntas e respostas entre linhas de dilogos entre o
entrevistador e o entrevistado, podendo mudar a sequncia das perguntas conforme
anexo A, e a outra tcnica o questionrio, que resume-se em uma sequncia de
perguntas sem logica e sem interveno de ningum conforme anexo B.
4.1.3 Registro de Requisitos
35
Nesta seo ser feito o levantamento de requisitos, baseando-se em
entrevistas feitas ao Jorge Hamilton de Souza e em um arquivo em formato .xls,
elaborado pelo mesmo que esta disponvel no anexo C os prints das telas.
QUADRO 3 - Requisitos manter cadastro de Produtores
F1 Manter informaes sobre produtores Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta de produtores. As informaes dos produtores so: id, cidade, pessoa fsica ou jurdica, nome,
CPF/CNPJ, logradouro, nmero residncia, CEP, bairro, telefone, celular, observaes, data de cadastro e se
esta ativo ou no.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF11.1
Identificao do
produtor.
O produtor deve ser identificado pelo
Nome.
Especifica
o
() (X)
NF 1.2 Cidade A cidade escolhida de uma lista. Interface () (X)
NF 1.3 Validao
CPF/CNPJ
Ser feito validao de CPF/CNPJ. Segurana () (X)
NF 1.4 Ativo Apenas produtores ativos estaro
disponveis no sistema.
Especifica
o
() (X)
QUADRO 4 - Requisitos manter cadastro de compradores
F2 Manter informaes sobre compradores Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta de compradores. As informaes dos compradores so: id, cidade, pessoa fsica ou jurdica, nome,
CPF/CNPJ, logradouro, nmero residncia, CEP, bairro, telefone, celular, observaes, data de cadastro e se o
produtor esta ativo ou no.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 2.1
Identificao do
comprador.
O comprador deve ser identificado pelo
Nome.
Especifica
o
() (X)
NF 2.2 Cidade A cidade escolhida de uma lista. Interface () (X)
NF 2.3Validao
CPF/CNPJ
Ser feito validao dos de CPF/CNPJ. Segurana () (X)
NF 2.4 Ativo Apenas compradores ativos estaro
disponveis no sistema.
Especifica
o
() (X)
QUADRO 5 - Requisitos manter cadastro de funcionrios
F3 Manter informaes sobre funcionrios Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta de funcionrios. As informaes dos funcionrios so: id, nome, CPF, RG, data de nascimento,
telefone, logradouro, nmero da residncia e data de admisso.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 3.1
Identificao do
funcionrio.
O funcionrio deve ser identificado
pelo Nome.
Especifica
o
() (X)
NF 3.2Validao
CPF
Ser feito validao do CPF. Segurana () (X)
NF 3.3 Validao
de RG
Ser feito validao do RG. Segurana () (X)

36
QUADRO 6 - Requisitos manter cadastro de tipos.
F4 Manter informaes sobre tipos Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta dos tipos. As informaes dos tipos so: id e nome.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 4.1
Identificao do
tipo.
O tipo deve ser identificado pelo ID. Especifica
o
() (X)
QUADRO 7 - Requisitos manter cadastro de grupos.
F5 Manter informaes sobre grupos Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta dos grupos. As informaes dos grupos so: id, nome.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 5.1
Identificao do
grupo.
O grupo deve ser identificado pelo ID. Especifica
o
() (X)

QUADRO 8 - Requisitos manter cadastro de tamanhos.
F6 Manter informaes sobre tamanhos. Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta dos tamanhos. As informaes dos tamanhos so: id, tamanho e grupo.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 6.1
Identificao do
tamanho.
O tamanho de fruta deve ser
identificado pelo ID.
Especifica
o
() (X)
NF 6.2 Grupo O grupo escolhido de uma lista. Interface () (X)
QUADRO 9 - Requisitos manter cadastro de entradas.
F7 Manter informaes sobre entradas Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta das entradas. As informaes das entradas so: id, produtor, responsvel, data, motorista, placa,
quantidade de bins
1
.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 7.1
Identificao da
entrada da fruta.
A entrada da fruta ser identificada por
um ID.
Especifica
o
() (X)
NF 7.2 Produtor O produtor escolhido de uma lista. Interface () (X)
NF 7.3
Responsvel
O responsvel escolhido de uma lista. Interface () (X)
1 Bins refere-se ao suporte onde armazenado as frutas.
QUADRO 10 - Requisitos manter cadastro de quantidade de entrada
F8 Manter informaes sobre quantidade de entrada Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta sobre quantidades de entrada. As informaes quantidades das entradas so: id, registro, tipo de fruta e
quantidade.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
37
NF 8.1
Identificao
quantidade de
entrada de fruta.
A quantidade de entrada da fruta ser
identificada por um ID.
Especifica
o
() (X)
NF 8.2 Tipo de
Fruta
O tipo de fruta ser escolhido de uma
lista
Interface () (X)
NF 8.3 Consulta As consultas apenas sero apresentadas
referentes ao registro, que vinculada
com a entrada de frutas.
Interface () (X)

QUADRO 11 - Requisitos manter cadastro de processamento
F9 Manter informaes sobre processamento Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta das entradas. As informaes sobre processamento so: id, produtor, responsvel e data de
processamento.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 9.1
Identificao de
processamento.
O processamento da fruta ser
identificado por um ID.
Especifica
o
() (X)
NF 9.2 Produtor O produtor ser escolhido de uma lista Interface () (X)
NF 9.3
Responsvel
O responsvel ser escolhido de uma
lista.
Interface () (X)

QUADRO 12 - Requisitos manter cadastro de quantidade de processamento
F10 Manter informaes sobre quantidade de processamento Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta da quantidade de processamento. As informaes sobre quantidade processamento so: id,registro,
categoria, tamanho e quantidade.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 10.1
Identificao da
quantidade do
processamento.
A quantidade do processamento da
fruta ser identificada por um ID.
Especifica
o
() (X)
NF 10.2 Categoria A categoria ser escolhida de uma lista Interface () (X)
NF 10.3 Tamanho O tamanho ser escolhido de uma lista. Interface () (X)
NF 10.4 Consulta As consultas apensa sero apresentadas
referentes ao registro, que vinculado
com o processamento das frutas.
Interface () (X)

QUADRO 13 - Requisitos manter cadastro de entradas de bins.
F7 Manter informaes sobre entradas de bins Oculto ( )
Descrio O sistema dever possibilitar que sejam feitas as operaes de incluso, excluso, alterao e
consulta das entradas de bins. As informaes das entradas so: id, fornecedor, quantidade, valor e data.
Requisitos No-Funcionais
Nome Restrio Categoria Desejvel Permanente
NF 7.1
Identificao da
entrada da fruta.
A entrada de bins ser identificada por
um ID.
Especifica
o
() (X)
NF 7.2 Produtor O fornecedor escolhido de uma lista. Interface () (X)
1 Bins refere-se ao suporte onde armazenado as frutas.
38

4.1.4 Modelo de dados
A partir dos dados coletados a partir do levantamento de requisitos, foi feito
a modelagem do banco de dados.
A figura 8 apresenta a modelagem juntamente com as relaes entre as
tabelas.

FIGURA 8 - Modelagem do Banco de Dados
4.2 Diagrama de caso de uso
Neste tpico ser apresente o diagrama de caso de uso, quais so especficos
para mostrar um relacionamento o relacionamento entre usurio, gerente, vendedor e
39
os casos de uso.

FIGURA 9 - Diagrama de caso de uso

A figura 9 apresenta o diagrama de caso de uso.
4.3 Concluso
Neste captulo foi apresentado todas as informaes necessrias da parte
lgica do negocio para que o desenvolvimento do sistema seja implementado. Foram
realizados entrevista e questionrios, coletados arquivos, feito o levantamento de
requisito juntamente com o diagrama de caso de uso.
40
5 IMPLEMENTAO
Neste captulo ser apresentado como a implementao do sistema foi
desenvolvida juntamente com a IDE Zend Studio, sendo demonstrado as tcnicas de
implementao do framework CakePHP.
5.1 Tecnologias Utilizadas
Para se desenvolver qualquer tipo de sistema de informao, de supra
importncia a escolha adequada de tecnologias para o auxilio na codificao, e ate
mesmo na escolha de linguagens a se usar para programar.
Ao se tornar necessrio a implementao em um ambiente Web, foi
definidas as seguintes tecnologias:
Servidor Apache verso 2.0;
Linguagem PHP verso 5.1.1;
Banco de Dados MySQL verso 5.0.16;
Framework CakePHP verso 1.3.8;
IDE Zend Studio verso 8.0.1;
dbForce Studio Express for MySQL verso 5.0.54;
DBDesigner4 verso 4.0.5.6;
5.2 Apresentao do sistema
Neste tpico ser explanado todo os cdigos que foram escritos para que o
sistema fosse desenvolvido, juntamente com as telas de apresentao.
41
5.2.1 Estrutura
Como ponto de partida para o desenvolvimento do sistema foi definido a
estrutura do banco de dados para que se pudesse ser executado a modelagem do banco
de dados, a figura 8 demonstra como ficou a modelagem. Para realizar esse processo
foi utilizado o software DBDesigner4, qual j me possibilita a criao do script para
que assim pudesse ser inserido a tabela no banco de dados juntamente com chaves
primrios e chaves estrangeiras, conforme demonstra o quadro 14.
QUADRO 14 - Script gerado pela ferramenta DBDesigner4
1
2
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
CREATE TABLE compradores (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
tpessoa INTEGER NOT NULL,
nome VARCHAR(128) NOT NULL,
cpf_cnpj VARCHAR(22) NOT NULL,
logradouro VARCHAR(256) NULL,
numero INTEGER(4) UNSIGNED NULL,
cep VARCHAR(12) NULL,
bairro VARCHAR(128) NULL,
telefone VARCHAR(16) NOT NULL,
celular VARCHAR(16) NULL,
obs VARCHAR(256) NULL,
cadastro DATE NULL,
ativo BOOL NULL DEFAULT true,
cidade VARCHAR(128) NULL,
PRIMARY KEY(id)
)
TYPE=InnoDB;

42

FIGURA 10 - Estrutura banco de dados

Depois de inserir todas as tabelas no banco de dados, a figura 9 mostra como
ficou estrutura as tabelas no banco de dados.
Pelo fato do sistema ser desenvolvido baseado em um framework que tem
como padro de projeto o MVC e por j ter uma estrutura de pasta pr-definida, o
sistema foi codificado conforme esta estrutura.
43

FIGURA 11 - Estrutura de pasta framework CakePHP

Conforme a figura 9 demonstra a estrutura de pasta, onde:
app: pasta com arquivos da lgica da sua aplicao;
cake: pasta com arquivos do framework;
plugins: pasta com plugins;
vendors: pasta com bibliotecas PHP desenvolvidas por terceiro;
Dentro da pasta app contm as subpastas onde se encontram toda a
implementao toda para a lgica do negcio, dentre as pastas de importncia para esta
aplicao temos:
config: encontra-se arquivo com configurao para conexo com o banco de dados;
controllers: encontram-se arquivos da camada de controle;
model: encontram-se arquivos da camada de modelo;
44
view: encontram-se arquivos da camada de viso;
5.2.2 Desenvolvimento
Depois da estrutura do sistema estar definida foi momento de dar inicio ao
desenvolvimento do aplicativo, deve-se citar que o framework esta preparado para
trabalhar com nomenclaturas em ingls, logo devemos alterar o arquivo chamado de
inflector.php qual esta dentro da pasta cake/lib, este arquivo se responsvel por todo
o padro de nomenclatura do framework. Logo foi necessrio inserir linhas de cdigos
definindo nomes em singular e seu respectivo em plural em portugus como mostra o
quadro 15.
QUADRO 15 - Alterao cdigo inflector.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
29
'irregular' => array(
'mythos' => 'mythoi',
'niche' => 'niches',
'numen' => 'numina',
'occiput' => 'occiputs',
'octopus' => 'octopuses',
'opus' => 'opuses',
'ox' => 'oxen',
'person' => 'people',
'sex' => 'sexes',
'soliloquy' => 'soliloquies',
'testis' => 'testes',
'trilby' => 'trilbys',
'turf' => 'turfs',
'produtor' => 'produtores',
'comprador' => 'compradores',
'entrada' => 'entradas',
'fentrada' => 'fentradas',
'bin' => 'bins',
'funcionario' => 'funcionarios',
'fornecedor' => 'fornecedores',
'tipo' => 'tipos',
'tamanho' => 'tamanhos',
'categoria' => 'categorias',
'grupo' => 'grupos',
'classificacao' => 'classificacoes',
'fclassificacao' => 'fclassificacoes',
)

Depois desse processo no tratamento de nomenclaturas foi iniciado a
implementao com o arquivo de configurao do banco de dados, necessrio
45
informar apenas alguns parmetros de conexo que o framework se encarrega por todo
o restante do trabalho de conexo, os parmetros so demonstrado no quadro 16.
QUADRO 16 - Configurao com o banco de dados
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class DATABASE_CONFIG {

var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'packinghouse',
);
}
?>


FIGURA 12 - Tela do framework informando sobre a conexo com o banco.

A figura 11 mostra a tela de abertura padro do framework, informando ao
usurio sobre o status das configuraes gerais do framework, fornecendo tambm um
help sobre onde se encontram os arquivos para alterar o cdigo da pgina, essa pagina
ser acessada como padro no link http://servidor/pasta raiz/, no meu caso
http://localhost/PackingHouse/.
Para alterar a interface do sistema e inserir os menus foi alterado o arquivo
default.ctp dentro de app/views/layouts/ sendo inserido linhas de cdigo conforme o
46
quadro 17, linkando um arquivo css para dar um efeito mais amigvel aos menus.
QUADRO 17 - Trecho de cdigo layout pgina principal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<ul id="menu" class="topmenu">
<li class="topfirst"><a
href="http://localhost/PackingHouse/" title="Incio"
style="height:18px;line-height:18px;">Incio</a></li>
<li class="topmenu"><a href="#" title="Cadastro"
style="height:18px;line-height:18px;"><span>Cadastro</span></a>
<ul>
<li><a href="#" title="Parmetros
Gerais"><span>Parmetros Gerais</span></a>
<ul>
<li><a
href="http://localhost/PackingHouse/tipos"
title="Tipos">Tipos</a></li>
<li><a
href="http://localhost/PackingHouse/categorias"
title="Categorias">Categorias</a></li>
<li><a
href="http://localhost/PackingHouse/grupos"
title="Grupos">Grupos</a></li>
<li><a
href="http://localhost/PackingHouse/tamanhos"
title="Tamanho">Tamanho</a></li>
</ul>

</li>
<li><a
href="http://localhost/PackingHouse/funcionarios"
title="Funcionrios">Funcionrios</a></li>
<li><a
href="http://localhost/PackingHouse/produtores"
title="Produtores">Produtores</a></li>
<li><a
href="http://localhost/PackingHouse/compradores"
title="Compradores">Compradores</a></li>
<li><a
href="http://localhost/PackingHouse/fornecedores"
title="Fornecedores">Fornecedores</a></li>
</ul>

</li>
<li class="topmenu"><a href="#" title="Entrada"
style="height:18px;line-height:18px;"><span>Entrada</span></a>
<ul>
<li><a href="http://localhost/PackingHouse/bins"
title="Bins">Bins</a></li>
<li><a
href="http://localhost/PackingHouse/entradas"
title="Carga">Carga</a></li>
</ul>

47

FIGURA 13 - Tela principal editada

A figura 12 mostra como a tela principal ficou depois de editado o padro do
framework.
O prximo passo a criao de cadastro de informaes do sistema, esse
cadastro vai seguir um padro para todos os outros, logo ser explicado como foi
desenvolvido o cadastro de funcionrios.
Como o sistema foi desenvolvido com o padro de projeto MVC, temos trs
camadas para tratar, primeiramente vamos tratar a camada de modelo, na pasta
app/models foi criado o arquivo funcionario.php, conforme mostra o quadro 18.
QUADRO 18 - Codificao arquivo funcionario.php
1
2
3
4
5
<?php
class Funcionario extends AppModel {
var $name = 'Funcionario';
}
?>

Depois de criar a camada de modelo para o cadastro de funcionrios deve-se
criar a camada de controle, onde ter todo das aes de insero, edio, remoo e
48
viso do cliente. Por padro de nomenclatura devemos criar o arquivo
funcionarios_controlle.php dentro da pasta app/controllers/, o quadro 19 demonstra
como fica a codificao para a visualizao geral de registro de funcionrios, qual ser
responsvel pela function index.
QUADRO 19 - Codificao de index do arquivo funcionarios_controller.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
class FuncionariosController extends AppController {

var $name = 'Funcionarios';

// Added by Jason Wydro: Simple Auth CakePHP v1.0
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('index','view');
}
// End

function index() {
$this->Funcionario->recursive = 0;
$this->set('funcionarios', $this->paginate());
}
}
?>

Para se adicionar a ao de viso para visualizar registros especficos deve-se
inserir a function view como demonstra o quadro 20.
QUADRO 20 - Codificao de view do arquivo funcionarios_controller.php
1
2
3
4
5
6
7
8
9
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Funcionario
invlido', true));
$this->redirect(array('action' => 'index'));
}
$this->set('funcionario', $this->Funcionario-
>read(null, $id));
}

Para se adicionar a ao de insero para inserir registros deve-se inserir a
function add como demonstra o quadro 21.
QUADRO 21 - Codificao de insert do arquivo funcionarios_controller.php
49
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function add() {
if (!empty($this->data)) {
$this->Funcionario->create();
if ($this->Funcionario->save($this->data)) {
$this->Session->setFlash(__('Funcionario
salvo com sucesso', true));
$this->redirect(array('action' =>
'index'));
} else {
$this->Session->setFlash(__('Funcionario
no foi salvo. Por favor, tente novamente.', true));
}
}
}

Para se adicionar a ao de edio para editar registros deve-se inserir a
function edit como demonstra o quadro 22.
QUADRO 22 - Codificao de edit do arquivo funcionarios_controller.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function edit($id = null) {
if (!$id && empty($this->data)) {
$this->Session->setFlash(__('Funcionario
invlido', true));
$this->redirect(array('action' => 'index'));
}
if (!empty($this->data)) {
if ($this->Funcionario->save($this->data)) {
$this->Session->setFlash(__('Funcionario
salvo com sucesso', true));
$this->redirect(array('action' =>
'index'));
} else {
$this->Session->setFlash(__('Funcionario
no foi salvo. Por favor, tente novamente.', true));
}
}
if (empty($this->data)) {
$this->data = $this->Funcionario->read(null,
$id);
}
}

Para se adicionar a ao de excluso para excluir registros deve-se inserir a
function edit como demonstra o quadro 23.
QUADRO 23 - Codificao de edit do arquivo funcionarios_controller.php
50
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function delete($id = null) {
if (!$id) {
$this->Session->setFlash(__('ID invlido para
funcionario', true));
$this->redirect(array('action'=>'index'));
}
if ($this->Funcionario->delete($id)) {
$this->Session->setFlash(__('Funcionario
deletado', true));
$this->redirect(array('action'=>'index'));
}
$this->Session->setFlash(__('No foi possvel deletar
funcionario', true));
$this->redirect(array('action' => 'index'));
} if (!empty($this->data)) {
if ($this->Funcionario->save($this->data)) {
$this->Session->setFlash(__('Funcionario
salvo com sucesso', true));
$this->redirect(array('action' =>
'index'));
} else {
$this->Session->setFlash(__('Funcionario
no foi salvo. Por favor, tente novamente.', true));
}
}
if (empty($this->data)) {
$this->data = $this->Funcionario->read(null,
$id);
}
}

Percebe-se que para todo caso, j est includo as mensagens que sero
apresentadas para o usurio na camada de viso, cada funo tem mensagens
especificas e tambm informando a situao da ao.
Prximo passo depois da implementao da camada de controle por fim a
camada da viso, onde ser tratado a interface apresentada para o usurio. Na pasta
app/views/ ser criado uma pasta com o nome de funcionrios, para dentro dessa pasta
criar trs arquivos diferentes, o arquivo index.ctp, ,view.ctp, add.ctp, edit.ctp. Para o
arquivo index.ctp, informado quais campos voc deseja que aparea juntamente com
as aes que o usurio pode tomar a partir dessa pgina, temos conforme demonstra o
quadro 24.
QUADRO 24 - Codificao arquivo index.ctp
51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<tr>
<th><?php echo $this->Paginator-
>sort('id');?></th>
<th><?php echo $this->Paginator-
>sort('nome');?></th>
<th><?php echo $this->Paginator-
>sort('cpf_cnpj');?></th>
<th><?php echo $this->Paginator-
>sort('celular');?></th>
<th><?php echo $this->Paginator-
>sort('cadastro');?></th>
<th class="actions"><?php __('Aes');?></th>
</tr>
<?php
$i = 0;
foreach ($funcionarios as $funcionario):
$class = null;
if ($i++ % 2 == 0) {
$class = ' class="altrow"';
}
?>
<tr<?php echo $class;?>>
<td><?php echo $funcionario['Funcionario']['id'];
?>&nbsp;</td>
<td><?php echo $funcionario['Funcionario']['nome'];
?>&nbsp;</td>
<td><?php echo $funcionario['Funcionario']['cpf'];
?>&nbsp;</td>
<td><?php echo
$funcionario['Funcionario']['telefone']; ?>&nbsp;</td>
<td><?php echo
$funcionario['Funcionario']['admissao']; ?>&nbsp;</td>
<td class="actions">
<?php echo $this->Html->link(__('Visualizar',
true), array('action' => 'view',
$funcionario['Funcionario']['id'])); ?>
<?php echo $this->Html->link(__('Editar', true),
array('action' => 'edit', $funcionario['Funcionario']['id'])); ?>
<?php echo $this->Html->link(__('Deletar',
true), array('action' => 'delete',
$funcionario['Funcionario']['id']), null, sprintf(__('Tem certeza
de que deseja excluir # %s?', true),
$funcionario['Funcionario']['nome'])); ?>
</td>

52


FIGURA 14 - Tela referente ao arquivo index.ctp

A figura 13 apresenta como a tela de apresentao para o usurio referente
ao arquivo index.ctp foi formada.
Para o arquivo view.ctp voc deve informar todos os casos do registro,
conforme mostra o trecho de cdigo no quadro 25.
QUADRO 25 - Trecho de cdigo do arquivo view.ctp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div class="funcionarios view">
<h2><?php __('Funcionrio');?></h2>
<dl><?php $i = 0; $class = ' class="altrow"';?>
<dt<?php if ($i % 2 == 0) echo $class;?>><?php
__('Id'); ?></dt>
<dd<?php if ($i++ % 2 == 0) echo $class;?>>
<?php echo $funcionario['Funcionario']['id']; ?>
&nbsp;
</dd>
<dt<?php if ($i % 2 == 0) echo $class;?>><?php
__('Nome'); ?></dt>
<dd<?php if ($i++ % 2 == 0) echo $class;?>>
<?php echo $funcionario['Funcionario']['nome'];
?>
&nbsp;
</dd>
<dt<?php if ($i % 2 == 0) echo $class;?>><?php
53
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
__('CPF'); ?></dt>
<dd<?php if ($i++ % 2 == 0) echo $class;?>>
<?php echo ($funcionario['Funcionario']['cpf']);
?>
&nbsp;
</dd>
</dl>
</div>
<div class="actions">
<h3><?php __('Aes'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('Editar', true),
array('action' => 'edit', $funcionario['Funcionario']['id'])); ?>
</li>
<li><?php echo $this->Html->link(__('Deletar', true),
array('action' => 'delete', $funcionario['Funcionario']['id']),
null, sprintf(__('Tem certeza que desejar excluir o funcionario:
# %s?', true), $funcionario['Funcionario']['nome'])); ?> </li>
<li><?php echo $this->Html->link(__('Lista', true),
array('action' => 'index')); ?> </li>
<li><?php echo $this->Html->link(__('Novo', true),
array('action' => 'add')); ?> </li>
</ul>
</div>


FIGURA 15 - Tela referente ao arquivo view.ctp

A figura 14 apresenta como a tela de apresentao para o usurio referente
54
ao arquivo view.ctp foi formada.
Para o arquivo add.ctp necessrio informar os dados que o usurio dever
registrar, conforme o quadro 26.
QUADRO 26 - Cdigo do arquivo add.ctp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<div class="funcionarios form">
<?php echo $this->Form->create('Funcionario');?>
<fieldset>
<legend><?php __('Adicionando Funcionrio');
?></legend>
<?php
echo $this->Form->input('nome');
echo $this->Form->input('cpf');
echo $this->Form->input('rg');
echo $this->Form->input('nascimento',
array('dateFormat'=>'DMY','timeFormat'=>'NONE'));
echo $this->Form->input('logradouro');
echo $this->Form->input('numero');
echo $this->Form->input('telefone');
echo $this->Form->input('admissao',
array('dateFormat'=>'DMY','timeFormat'=>'NONE'));
echo $this->Form->input('ativo');
echo $this->Form->input('obs', array('type' =>
'textarea', 'escape' => false));
?>
</fieldset>
<?php echo $this->Form->end(__('Salvar', true));?>

</div>
<div class="actions">
<h3><?php __('Aes'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('Lista de
Funcionrios', true), array('action' => 'index'));?></li>
</ul>
</div>

55

FIGURA 16 - Tela referente arquivo add.ctp
A figura 15 mostra como a tela de apresentao para o usurio referente ao
arquivo add.ctp foi formada.
Para o arquivo edit.ctp necessrio informar os dados que o usurio dever
editar, seguindo um mesmo padro de codificao que o arquivo add.ctp, conforme o
quadro 27.
QUADRO 27 - Cdigo do arquivo edit.ctp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="funcionarios form">
<?php echo $this->Form->create('Funcionario');?>
<fieldset>
<legend><?php __('Editando Funcionrio'); ?></legend>
<?php
echo $this->Form->input('nome');
echo $this->Form->input('cpf');
echo $this->Form->input('rg');
echo $this->Form->input('nascimento',
array('dateFormat'=>'DMY','timeFormat'=>'NONE'));
echo $this->Form->input('logradouro');
echo $this->Form->input('numero');
echo $this->Form->input('telefone');
echo $this->Form->input('admissao',
array('dateFormat'=>'DMY','timeFormat'=>'NONE'));
echo $this->Form->input('ativo');
echo $this->Form->input('obs', array('type' =>
'textarea', 'escape' => false));
56
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
?>
</fieldset>
<?php echo $this->Form->end(__('Salvar', true));?>
</div>
<div class="actions">
<h3><?php __('Aes'); ?></h3>
<ul>
<li><?php echo $this->Html->link(__('Deletar', true),
array('action' => 'delete', $this->Form-
>value('Funcionario.id')), null, sprintf(__('Tem certeza que
desejar excluir o funcionario: %s?', true), $this->Form-
>value('Funcionario.nome'))); ?></li>
<li><?php echo $this->Html->link(__('Lista', true),
array('action' => 'index'));?></li>
</ul>
</div>


FIGURA 17 - Tela apresentao referente arquivo edit.ctp

A figura 16 mostra como a tela de apresentao para o usurio referente ao
arquivo add.ctp foi formada.
Ainda para este modelo temos algumas funcionalidades que pode ser
adicionada, como de grande importncia a validao de dados, essa validao ser
tratada na camada de modelo, conforme mostra o quadro 28.
57
QUADRO 28 - Validao de dados arquivo funcionario.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
class Funcionario extends AppModel {
var $name = 'Funcionario';
var $displayField = 'nome';

var $validate = array(
'nome' => array(
'rule' => 'notEmpty',
'message' => 'Campo Obrigatrio'),
'cpf' => array(
'rule' => 'numeric',
'required' => true,
'message' => 'Este campo aceita apenas
nmero'),
'rg' => array(
'rule' => 'numeric',
'allowEmpty' => true,
'message' => 'Este campo aceita apenas
numrico'),
'numero' => array(
'rule' => 'numeric',
'allowEmpty' => true,
'message' => 'Este campo aceita apenas
numrico'),
'telefone' => array(
'rule' => 'numeric',
'allowEmpty' => true,
'message' => 'Este campo aceita apenas
numrico'));
}
?>



FIGURA 18 - Tela de validao de dados
Segundo a figura 17, temos a validao de dados para o campo cnpj, que
permiti apenas nmeros e foi tentando inserir um registro com valor alfanumrico,
58
assim o sistema apresenta o erro e continua com os dados nos campos.
Temos o cadastro completo de funcionrios, para realizar os outros cadastros
seguindo apenas esse padro.

5.3 Concluso
Neste captulo foi demonstrado passo a passo de todo o processo de
codificao do sistema, desde a definio da base de dados e sua criao, modificaes
no arquivo do prprio framework, criao de configurao com banco de dados,
criao de cadastro.
Importante citar que foi encontrado dificuldades ao desenvolver o sistema,
onde ficou concentrado basicamente no entendimento do framework. Tratando de um
framework fundamentado no padro de projeto MVC, houve a necessidade
primeiramente de um estudo sobre esse padro de projeto, posteriormente foram
encontradas dificuldades no momento da configurao do framework, dificuldades
durante o desenvolvimento foram surgindo, porm essas dificuldades foram
ultrapassadas, e chego assim ao desenvolvimento total do sistema.

59
6 CONSIDERAES FINAIS
Este trabalho teve como principal objetivo desenvolver um sistema para
auxiliar gestores de Packing House, sendo utilizado o framework CakePHP, especfico
para linguagem PHP.
Durante o trabalho foi realizado um estudo para entendimento da regra de
negcio do sistema e do framework CakePHP, conhecendo assim mtodos e funes
que pudessem auxiliar no desenvolvimento.
Durante a realizao deste trabalho dvidas e dificuldades foram
encontradas, a maior dificuldade para o desenvolvimento do sistema foi o
entendimento do funcionamento do framework CakePHP, dessa maneira, foi feito um
estudo aprofundado de todas as propriedades e recursos que o framework disponibiliza
ou no.
O primeiro Objetivo Especfico foi alcanado com sucesso ao aplicar
questionrios, realizar entrevistas e coletar materiais com o especialista no caso Jorge
Hamilton de Souza.
Aps concluir o primeiro Objetivo Especfico, o segundo Objetivo foi
iniciado, tambm sendo alcanado com sucesso, quando foi definida a arquitetura do
sistema.
O terceiro Objetivo Especfico foi alcanado em grande parte do proposto,
para a implementao no foi possvel codificar a parte de gerao de relatrios, pois
para esse objetivo era necessrio que o especialista no caso definisse quais os
relatrios desejados.
Para o quarto Objetivo Especfico, foi alcanado com sucesso, juntamente
com o desenvolvimento eram feito paralelamente testes focados a encontrar erros e
60
quando encontrados eram solucionados e por fim foi implantado o sistema.
Importante esclarecer neste trabalho a eficincia e o rendimento do
framework CakePHP, mas para que se possa aproveitar o mximo do framework de
extrema importncia o estudo aprofundado primeiramente. Alm do fato de CakePHP
trabalhar com orientao a objeto e com padro de projeto MVC.
Um ponto negativo encontrado no framework CakePHP a ausncia, ao
menos por enquanto, de classes para auxiliar gerao de relatrios.
Como sugesto de trabalhos futuros, indico estudar o CakePHP com a ltima
verso, desenvolvendo um sistema que auxilie agricultores na plantao frutos .

REFERNCIAS BIBLIOGRFICAS
MARTINS, Petrnio Garcia; ALT, Paulo Renato Campos. Administrao de materiais e
recursos patrimoniais. So Paulo: Saraiva, 2000. 353 p.
PETERS, J.E.; PEDRYCZ, W. Engenharia de Software Teoria e Prtica: Editora
Campus, 2001. 438 p.
COOKBOOK. O manual do CakePHP. Disponvel em: <http://www.book.cakephp.org>.
Acessado em 11 mai. 2011.
PORTALBRASIL, A sua biblioteca virtual. Disponvel em: <
http://www.portalbrasil.net/2005/colunas/administracao/julho.html>. Acessado em 14 jun.
2010.
CAKEPHP. Framework PHP de desenvolvimento rpido. Disponvel em:
<http://www.cakephp.org>. Acessado em: 11 mai. 2011.
GONALVES, E. Desenvolvendo aplicaes web com JSP, Servlet, JavaServer Faces,
Hibernate, EJB3 persistence, Ajax. Rio de Janeiro: Cincia Moderna, 2007.
LEMOS, T. O que o MVC - Model View Controller. Disponvel em:<
http://www.tiagolemos.com.br/2009/07/10/o-que-e-o-mvc-model-view-controller/>.
Acessado em: 20 jun. 2010.
MACORATTI. Padres de Projeto: O modelo MVC Model View Controller. Disponvel
em: <http://www.macoratti.net/vbn_mvc.htm>. Acessado em: 11 mai. 2011.
MARTINI. Licenas e Copyrights. Disponvel em: <http://www.torradeira.net/licencas-e-
copyrights>. Acessado em: 11 mai. 2011.
GITHUB. Social Coding. Disponvel em:
<http://www.github.com/cakephp/cakephp/downloads>. Acessado em: 17 mai. 2011.
COMPJUNIOR. Tutorial de Instalao do CakePHP. Disponvel em:
<http://http://blog.compjunior.com.br/artigos/desenvolvimento/tutorial-de-instalacao-do-
cakephp/>. Acessado em: 17 mai. 2011.
IBM, Crie Web sites rapidamente com CakePHP, Parte 2: Faa mais e melhor com
CakePHP. Disponvel em: <http://www.ibm.com/developerworks/br/library/os-php-
cake2/section5.html>. Acessado em: 23 de Jun. 2011.
CHITARRA, M.I.F. Ps-colheita de frutos e hortalias: fisiologia e manuseio. Lavras:
ESAL/FAEPE, 1994, 289p.
AWAD, M. Fisiologia ps-colheita de frutos. So Paulo: Nobel, 1993, 114p.



APNDICES
APNDICE A - ARTIGO ......................................................................................... 41














APNDICE A - ARTIGO
Aplicaes Web com framework CakePHP

Thiago Luiz Nunes de Souza
Universidade do Planalto Catarinense (UNIPLAC) Lages SC Brasil
lnsthiago@gmail.com
Abstract. This article aims to briefly describe the CakePHP framework, from its
history to the development of a system, thus demonstrating how the technology
works in practice and what it has to offer. The example is used to develop a system
of news. The CakePHP framework provides a robust application development,
reliable, graphical interfaces friendly and independent of the level of the developer,
leaving the tedious hand-side programs out.
Resumo. Este artigo tem como objetivo descrever brevemente o framework
CakePHP, desde sua histria at o desenvolvimento de um sistema, demonstrando
assim como a tecnologia funciona na prtica e o que ela tem para oferecer. O
exemplo usado para o desenvolvimento um cadastro de notcias. O framework
CakePHP oferece um desenvolvimento de aplicaes robustas, confiveis, com
interfaces grficas amigveis e independente do nvel do desenvolvedor, deixando o
lado montono de programar de fora.
1. Introduo
Em 2005 Michal Tatarynowicz desenvolveu um framework simples em PHP,
chamando-o de Cake. Posteriormente percebendo que o framework tinha uma base
interessante, publicou o cdigo sob a licena Massachusetts Institute of Technology (MIT)
onde agregou ao seu trabalho uma comunidade de programadores que matm o framework at
hoje chamado de CakePHP.
CakePHP um framework gratuito de cdigo aberto, desenvolvido em PHP baseado
nos conceitos de Ruby on Rails. O objetivo principal permitir o desenvolvimento robusto de
aplicaes para qualquer nvel de programadores e deixando de lado a monotonia tradicional
da implementao(COOKBOOK, 2010).
CakePHP traz consigo uma equipe de desenvolvedores e uma grande comunidade,
agregando e potencializando o crescimento do framework. O framework usa design patterns
conhecidos como Model View Controller (MVC) e Object Relational Mapping (ORM) com
conveno sobre paradigma da configurao. A vantagem maior do uso dos padres
permitir, reduo d o custo do desenvolvimento, bem como ajudar os desenvolvedores a
escreverem menos cdigos, facilitando a manuteno (CAKEPHP, 2010).

2. Caractersticas
O framework utiliza o padro de projeto MVC, ele prov uma diviso de camadas
tornando a lgica de negcio separada da interface de apresentao para o usurio, separando
tambm do fluxo de informao. Isto facilita o desenvolvimento e a manuteno do cdigo do
aplicativo, pois se poupa esforo e tempo de desenvolvimento quando manutenes
adaptativas e corretivas necessitam ser realizadas.
Segundo Macoratti (2002), a chave para a independncia entre os componentes a
organizao em camadas e esta independncia visa atingir eficincia, escabilidade,
reutilizao e facilidade de manuteno.

FIGURA 19 - Aplicaes em trs camadas
(Fonte: MACORATTI, 2002)
A Figura 18 exemplifica a separao entre a interface de apresentao representada
pela lgica de apresentao, a lgica de negcio, e o fluxo de informao que esta
representada pelo acesso a dados, permitindo assim que qualquer parte possa ser alterada
independentemente (MACORATTI, 2002).
O CakePHP distribudo sob a licena MIT. MIT, uma licena de programas de
computadores usada em softwares de cdigo livre, criada pelo Massachusetts Institute of
Technology. Ela Permite a utilizao, a cpia, a modificao, a distribuio e a venda do
software, com a condio que a nota de copyright seja conservada em todas as cpias, e que o
nome MIT no seja utilizado como publicidade sem permisso escrita previa (MARTINI,
2000).
Outra importante caracterstica o Scaffolding de aplicao. E ela permite ao
desenvolvedor definir e criar uma aplicao bsica com funcionalidades Create Retrieve
Insert Delete (CRUD), onde o usurio poder adicionar, selecionar, atualizar e deletar objetos
a partir de uma base de dados. No CakePHP essa tcnica possibilita tambm os
desenvolvedores definirem as relaes entre os objetos, podendo criar e destruir essas
relaes. Mas o Scaffolding apenas para aplicativos simples, sem permitir customizao da
interface de apresentao.

FIGURA 20 - Tela padro do Scaffolding.
QUADRO 29 - Cdigo arquivo Scaffolding

1
2
3
4
5

<?php
Class AtividadesController extends AppController {
Var $scaffold;
}
?>

A Figura 19 ilustra um exemplo de aplicao CRUD, gerada pelo Scaffolding. No
Quadro 29 mostra, a simplicidade da codificao do arquivo de controle de atividades para a
gerao da interface grfica ilustrada na Figura 4.
Para uma maior produtividade sem o uso do Scaffolding que no aceita alteraes,
CakePHP conta com o Bake console, onde o desenvolvedor necessita apenas informar
parmetros sobre a base de dados, que o bake gera toda a codificao dos arquivos MVC,
permitindo ainda as customizaes conforme o desenvolver precise.
Em qualquer aplicao a validao de dados um fator importante. Ela consiste em
verificar se os dados digitados respeitam a lgica de negcio da aplicao. Por exemplo,
limitar que algum campo aceite apenas um tipo de valor, ou ento que esse campo no aceite
valor vazio(COOKBOOK, 2010).

FIGURA 21 - Tela com alerta de Validao
QUADRO 30 - Codificao Validao de dados
1
2
3
4
5

7
<?php
class Atividade extends AppModel {
var $name = 'Atividade';

public $validate = array('acao' => array('rule' => 'notEmpty',
'message' => 'Campo deve ser preenchido!'));
}

A Figura 20 ilustra alerta de validao, levando em considerao que foi realizado
uma tentativa de salvar os dados sem preencher o campo Acao. O quadro 30 a codificao
do model da Atividade, na linha 5 mostra como as regras de validao so adicionadas,
criando um array $validate com o nome do campo, o tipo de regra e a mensagem a ser
apresentada para o usurio.

Somada as demais caractersticas do CakePHP, o mesmo contm um componente que
ajuda na criao das views, chamado de Helper. Esse componente facilita a formatao de
textos, horrios e nmeros alm de agilizar o desenvolvimento de funes com Ajax. Entre os
Helpers que o CakePHP disponibiliza por padro tem-se: Ajax, Cache, Form, Html,
Javascript, Number, Paginator, Rss, Session, Tex, Time, Xml.
Por padro o CakePHP oferece alguns componentes embutidos, esses componentes
trazem mtodos capazes de tratar tarefas comumente usadas, desde a parte de segurana at
mesmo funes para envio de emails. Esta seo se dedica a apresentar estes componentes.
Access Control List (ACL) basicamente uma lista de permisso, para definir o que
cada objeto ter permisso para acessar. Isto, facilita a manuteno e o gerenciamento de
acessos. Deve-se lembrar que ACL no nenhum tipo de autenticao (IBM ,2009). ACL
composto por Access Object Request (ARO) e por Acess Control Object (ACO): ARO o
objeto que faz a requisio para acessar a aplicao, enquanto, ACO o objeto de controle
que determina o que cada ARO poder acessar;
Um fator essencial em uma aplicao web autenticao de usurios, tornando a
aplicao mais confivel. A maneira que o CakePHP trata autenticao com o componente
Auth, podendo ser mesclado com o componente ACL, criando nveis complexos de
acessos(COOKBOOK, 2010).
Cookies so informaes trocadas entre o servidor e o navegador, armazenando um
arquivo texto no computador do usurio, mantendo a persistncia de sesses HTTP.
O componente email responsvel funo de envios de email de aplicaes em
CakePHP, enviando mensagens em formato texto, HTML ou ambos, suportando anexo de
arquivos juntamente com algumas configuraes de cabealhos. Esse componente por ser
enviado por servidor Simple Mail Tranfer Protocol (SMTP) (COOKBOOK, 2010).
As informaes contidas nas requisies HTTP feitas para a aplicao podem ser
capturadas pelo componente RequestHandler. Podendo tambm obter informaes adicionais
do cliente (COOKBOOK, 2010).
O componente Security tem como funcionalidade gerenciar requisies HTTP
autenticadas, por padro quando alguma solicitao for bloqueada pelo Security, apresentar
para o usurio uma pgina com erro 404(COOKBOOK, 2010).
Para a persistncia de dados do cliente entre as requisies usado o componente
Session, funcionando como encapsulador da varivel $_SESSION, oferecendo tambm
mtodos relacionados mesma (COOKBOOK, 2010).

3. Desenvolvimento
Para o desenvolvimento com CakePHP necessrio um servidor HTTP,
preferencialmente o Apache, PHP 4 ou posterior e uma base de dados, podendo ser: MySQL,
PostGres, SQL Server, Oracle, SQLite, ODBC, ADOdb e Firebird BD2.
Baixe o pacote com os arquivos necessrios do caminho http://cakephp.org,
descompacte os arquivos dentro da pasta de servidor Web.



FIGURA 22 - Tela pasta CakePHP descompactada
Na figura 21 demonstra como fica a disposio de pasta ao descompactar a pasta do
framework CakePHP. Digitando em um navegador qualquer o endereo:
http://localhost/cakephp deve aparecer a seguinte pgina:

FIGURA 23 - Tela informando dados CakePHP
A figura 22 apresenta a tela inicial da pgina local com CakePHP acessado por um
navegador.
Temos para a aplicao trs operaes bsicas que o sistema deve realizar, entre elas
esto: Listar, Adicionar, Editar e Deletar. A partir dessas informaes deve-se configurar a
conexo com o banco de dados, esta configurao encontra-se dentro do arquivo
database.php.default na pasta app/config, aps a configuracao alterar o nome para
database.php.
QUADRO 31 - Codificao da configurao com banco de dados

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class DATABASE_CONFIG {

var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database_name',
'prefix' => '',
//'encoding' => 'utf8',
);

var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
}

O quadro 31 ilustra a codificao do arquivo de configurao com o banco de dados,
onde voc precisa apenas definir as informaes para o banco que quer acessar.
Depois de configurado o arquivo de configurao com o banco o momento de voc
criar a tabela de noticias, vamos chamar essa tabela de posts.
QUADRO 32 - Script criao tabela de posts
1
2
3
4
5
6
7
CREATE TABLE posts(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body VARCHAR(512),
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);

No quadro 31 esta o script para criar a tabela dentro do banco de dados definido no
arquivo de configurao. Prximo passo criar um arquivo chamado post.php dentro da pasta
app/models.
QUADRO 33 - Codificao arquivo post.php
1
2
3
4
5
<?php
class Post extends AppModel {
var $name = 'Post';
}
?>

No quadro 33 contm a codificao do arquivo da parte do model, prximo passo
codificar o arquivo do pots_controller.php dentro da pasta app/controller.
QUADRO 34 - Codificao arquivo posts_controller.php
1
2
3
4
5
6
<?php
class PostsController extends AppController {
var $name = 'Posts';
var $scaffold;
}
?>

No quadro 34 esta a codificao do arquivo posts_controller.php, como foi definido
nesse arquivo o scaffold, o framework cria automaticamente a parte de interface grfica e
deixando teu sistema pronto, basta apenas acessar o endereo http://localhost/cakephp/posts.

FIGURA 24 - Tela de index dos cadastros de noticias
A figura 23 apresenta a tela de index dos cadastro de notcias.


FIGURA 25 - Tela de insero de noticias


A figura 24 apresenta a tela de insero de notcias.

FIGURA 26 - Tela de edio de notcias

A figura 25 apresenta a tela de edio de notcias.

FIGURA 27 - Aviso ao excluir notcia

Na figura 26 mostra um aviso apresentado para o usurio no momento de excluso de
notcias.
4. Concluso
Este artigo teve como objetivo realizar um estudo sobre o framework CakePHP e,
posteriormente, desenvolver uma aplicao proposta como intuito de exemplificar a
simplicidade na codificao.
Durante o desenvolvimento do artigo foram apresentadas dados histricos do
framework, as suas caracterstica juntamente com seus principais mdulos, foi explanado
tambm a maneira de como desenvolver um aplicao simples.
Importante ressaltar a facilidade com que se pode desenvolver um sistema web
robusto, alm da mnima quantidade de linhas necessrias para se desenvolver.

5. Referencia Bibliogrfica
COOKBOOK. O manual do CakePHP. Disponvel em: <http://www.book.cakephp.org>.
Acessado em 11 mai. 2011.
CAKEPHP. Framework PHP de desenvolvimento rpido. Disponvel em:
<http://www.cakephp.org>. Acessado em: 11 mai. 2011.
MACORATTI. Padres de Projeto: O modelo MVC Model View Controller. Disponvel
em: <http://www.macoratti.net/vbn_mvc.htm>. Acessado em: 11 mai. 2011.
MARTINI. Licenas e Copyrights. Disponvel em: <http://www.torradeira.net/licencas-e-
copyrights>. Acessado em: 11 mai. 2011.



























ANEXOS
ANEXO A - ENTREVISTA ...................... ERRO! INDICADOR NO DEFINIDO.
ANEXO B - QUESTIONRIO .................................................................................. 3
ANEXO C - PRINT ARQUIVO XLS ........................................................................ 4































ANEXO A - ENTREVISTA
1) Qual a importncia do aplicativo para o Packing House?
O aplicativo ir facilitar o controle de estoque, ir fornecer informaes
conforme a necessidade, disponibilizar o acesso s informaes.

2) Qual o objetivo da implementao do sistema?
A implementao do sistema deve possibilitar a incluso de registro feitos
hoje em papel, salvando as informaes em um banco de dados. Podendo
ser visualizado e alterado de qualquer computador no domnio da
empresa.

3) Quais os principais dados de entrada so necessrios?
necessrio ter a entrada de dados referente aos seguintes tipos:
funcionrios, fornecedores, compradores, produtores, tipos, tamanhos,
categorias, grupos, entrada de bins, entrada de carga, classificao e a
sada de frutos.






















ANEXO B - QUESTIONRIO
1) Qual o principal objetivo de um Packing House?
Agregar valor s frutas atravs do beneficiamento, logstica e
desconcentrao da oferta do perodo de colheita.

2) Quais so os principais processos executados dentro do Packing House?

Expedio de vasilhames (bins) para colheita, recebimento das frutas vindas
do campo, estocagem das frutas em cmaras frigorficas, separao das
frutas por calibre e qualidade, empacotamento e expedio de frutas para o
mercado.

3) Quais os principais problemas encontrados na gesto de um Packing House?
A dificuldade em estabelecer sistemas de registros apropriados para
acompanhamento e controle dos processos em packing de frutas.

4) Tem alguma soluo em vista para esse(s) problema(s)?
Temos expectativas do surgimento de ferramentas, na rea de TI
especficas para o setor que estejam ao alcance das pequenas e mdias
empresas.

5) Qual sua opinio sobre Tecnologia de Informao dentro da sua rea de
gesto?

Um sistema informatizado que seja gil na alimentao de dados e
principalmente prtico na obteno de relatrios, sem duvida alguma , traria
maior clareza na leitura e gesto da empresa

6) Acredita que um aplicativo possa trazer benefcios para a gesto?
Sim, acreditamos que atravs um aplicativo adequado poderamos ter
melhoria na gesto.





ANEXO C PRINT ARQUIVO XLS

Você também pode gostar