Vous êtes sur la page 1sur 15

Revista Interdisciplinar

Digitally signed by Revista Interdisciplinar DN: cn=Revista Interdisciplinar, o=UNIVAR, ou, email=roziner@univar.edu.br, c=BR Date: 2009.12.09 11:19:35 -02'00'

PADRES DE PROJETOS (DESIGN PATTERNS) PARA WEB COM PHP


Carlos David Rocha de Souza1

RESUMO
O desenvolvimento utilizando padres de projeto (Design Patterns) no deve ser considerado uma maneira de reutilizao de cdigos prontos, mas sim boas idias de desenvolv-los. A finalidade deste artigo mostrar boas prticas de programao orientada a objeto, com aplicao de padres de projeto enterprise para solucionar o problema proposta pela aplicao web utilizando a linguagem de programao PHP5 (Hypertex Preprocessor), o servidor web/SGDB WampServer2.0h (Apache, PHP5, phpMyAdmin e MySQL) e IDE NetBeans 6.5.

Palavras-chave: Design Patterns; PHP; MVC Model View Controller.

DESIGN PATTERNS FOR WEB WITH PHP


ABSTRACT
The development using Design Patterns should not be considered a way of reutilization of ready codes, but, good ideas for developing them. The objective of this article is to show good practice of programming guided to object, with application of Design Patterns enterprise to solve the problem proposed by the application web using the programming language PHP5 (Hypertex Preprocessor), the server web/SGDB WampServer2.0h (Apache, PHP5, phpMyAdmin and MySQL) and GO NetBeans 6.5.

Key-Words: Design Patterns; PHP; MVC Model View Controller. INTRODUO Logo aps aprender uma linguagem de programao ao avaliar outros projetos e percebendo que cdigos de outros desenvolvedores aparentam ser mais complexo e com um funcionamento melhor, da geralmente nasce um questionamento de como alcanar tal grau de excelncia no desenvolvimento de aplicativos. Neste artigo, trataremos do conceitos e prticas de regras ou padres de projetos, comumente chamadas de Design Pattern que uma maneira de alcanar um objetivo no desenvolvimento de aplicativos com linguagem de programao orientada a objetos codificando classes e mtodos. Os padres de projetos esto em um nvel mais elevado do que o prprio cdigo desenvolvido, buscando mostrar como alcanar um objetivo e auxiliando no desenvolvimento mais eficaz do cdigo orientado a objeto. Dessa forma, alm da usar a metodologia de pesquisa bibliogrfica, neste artigo expressamos uma abordagem de estudo de caso ao exemplificar por meio de uma aplicao para web e seu caso de uso que utiliza design pattern para solucionar o caso proposto no desenvolvimento em camadas do aplicativo para otimizar a segurana do cdigo.

2. PADRO DE PROJETO (DESIGN PATTERN) No desenvolvimento de sistemas de deparado algum problema que fica a impresso que j foi visto antes e criado uma soluo para tal, porm no foi elaborado uma documentao sobre a soluo nem se guardou em memria. ____________________________________
Tecnlogo em Sistemas de Informao (2005); Especialista em cincias da computao (2007). Atuante na rea da tecnologia da informao desde 1997. Atualmente professor na Faculdades Unidas do Vale do Araguaia; Analista de redes na Bmz Couros Ltda e Desenvolvedor de Aplicaes Orientadas a Objeto e para Web. E-mail: carlosdavidr@gmail.com
1

neste ponto que se aplica o padro de projeto, pois para GABRIEL (2008), no mais aceitvel que a cada vez que deparasse com uma determinada situao, at repetitiva, tenha que se pensar novamente em uma busca de uma soluo nova. O que dever ser feito no momento de identificao pela primeira vez de uma situao, document-la. Para isso devese dar um nome, explicando o contexto no qual est inserida, descrevendo a soluo encontrada e mostrando as consequncias desta soluo, de forma que da prxima vez que esta situao for identificada, conte com a ajuda dessa documentao para solucionar o problema. Este tipo de documentao da soluo de um problema faz com que os profissionais menos experientes possam aprender a partir da experincia documentada de outros profissionais e no tenham um que comear do zero. Dessa forma evita-se erros cometidos anteriormente at que se chegue a um resultado ou soluo satisfatria, ganhando tempo no desenvolvimento da aplicao final. A utilizao de padres de projetos no desenvolvimento de aplicaes otimiza na elaborao da documentao facilitando na manuteno dos sistemas j existentes. Segundo GONALVES (2007), um padro descreve um problema que ocorre inmeras vezes em determinado contexto, e descreve ainda a soluo para esse problema, de modo que essa soluo possa ser utilizada sistematicamente em distintas situaes. Para DALLOGLIO (2007) um padro pode ser definido como a abstrao de uma forma concreta que se repete em um contexto especfico no-arbitrrio. J MELO (2007) afirma que:
Cada pattern uma regra de tr partes, uma que expressa uma relao entre um certo contexto, um certo sistema de foras que ocorre repetidamente nesse contexto, e uma certa configurao de software que permite que estas foras sejam resolvidas.

3. TIPOS DE PADRES DE PROJETO

Os padres so organizados em grupos e nomeados a partir de suas funcionalidades de utilizao. A seguir apresentaremos topicamente as descries dos mais comuns.

3.1 Padres Estruturais Descreve como os objetos interagem entre si. Em outras palavras, eles abordam o framework estrutural dos objetos: Bridge: Separa uma abstrao de sua implementao, de modo que as duas possam variar independentemente. Adapter: Permite que dois objetos se comuniquem mesmo que tenha interfaces incompatveis. Composite: Agrupa os objetos em estrutura de rvore para representar a hierarquia do tipo partes - todo. O Composite permite que os clientes tratem objetos individuais e composies de objetos de maneira uniforme. Decorator: Atribui responsabilidade adicionais a um objeto dinamicamente.O Decorator fornece uma alternativa flexvel a subclasses para a extenso da funcionalidade. Facade: Fornece uma interface nica para um subsistema com diversas interfaces. O Faade define uma interface de nvel mais alto que torna o subsistema mais fcil de usar. Flyweight: Usa compartilhamentos para dar suporte inmeros objetos, de granularidade fina, de forma eficiente. Proxy: Fornece um objeto representante ou marcador de outro objeto, para controlar o acesso ao mesmo.

3.2 Padres Comportamentais Descreve como podemos usar os objetos para alterar o comportamento de um sistema em tempo de execuo: Observer: Define um uma dependncia um-para-muitos entre objetos, de modo que, quando um objeto muda de estado todos os seus dependentes so notificados e atualizados. Mediator: Cria um objeto que age como um mediador, controlando a interao entre um conjunto de objetos.

Chain of Responsibility: Evita o dependncia do remetente (cliente) de uma requisio ao seu destinatrio, dando a oportunidade de mais de objeto tratar a requisio. Command: Encapsula uma requisio como um objeto, desta forma permitindo que voc parametrize clientes de diferentes solicitaes. Interpreter: usado para ajudar uma aplicao a entender uma declarao de linguagem natural e executar a funcionalidade da declarao. Iterator: Oferece um mtodo (um meio) para fazer acesso aos elementos de uma coleo. Visitor: usado Quando as operaes necessitam ser realizadas sobre inmeros elementos de um modelo de objeto. Template Method: Define o esqueleto de um algoritmo em uma operao, adiando a definio de alguns passos para as subclasses. Memento: Possibilita armazenar o estado de um objeto de modo que o mesmo possa ser recuperado. State: Permite que um objeto altere seu comportamento quando se estado interno muda. Strategy: Define uma famlia de algoritmos, encapsular cada um deles e fazlos intercambiveis.

3.3 Padres de Criao So utilizados no instante da criao do objeto e so divididos em: Abstract Factory: Prov uma interface para criao de famlias de objetos relacionados ou dependentes sem especificar suas classes concretas. Factory Method: Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. Singleton: Garante que uma classe tenha somente uma "instance" (objeto) Builder Separa a construo de um objeto complexo da sua representao, de modo que o mesmo processo de construo possa criar diferentes representaes. Prototype: Especifica os tipos de objetos a serem criados usando uma "instance" prototpica e criar novos objetos copiando este prottipo.

3.4 Padres Enterprise

3.4.1 MVC - Model-View-Controller O padro Model-View-Controller um padro de arquitetura ou seja ele indica o que dever ser organizao global do sistema. Ele sugere a separao por camadas modelo, viso e controle da aplicao: Modelo (Model): encapsula o estado da aplicao, responde consulta do seu estado, expe funcionalidade da aplicao, e notifica a viso de mudanas. Controle (Controller): define comportamento do aplicativo, mapeia usurios gestores para atualizaes no modelo, seleciona viso para resposta, um viso para cada funcionalidade. Viso (View): detem o modelo, pede atualizaes ao modelo, manda usurios gestores ao controlador, permite o controlador escolher viso.

4. AMBIENTES DE DESENVOLVIMENTO E USO DOS PADRES DE PROJETO Antes da escolha do padro de projeto a ser adotado importante conhec-lo por completo, com a realizao de uma leitura abrangente de sua fundamentao terica. recomendado que se se estude as sees de descrio do problema a ser solucionado e do padro a ser adotado na soluo, pesquise exemplos de cdigos do padro escolhido, defina nomes para os participantes do padro que tenham sentido no contexto da aplicao. Tambm qe se defina de forma lgica e padronizada os nomes para as classes a serem criadas e codificadas, especifique nomes para aplicao e operaes do padro, que se codifique a operao para suportar as responsabilidades e colaboraes presentes na soluo do programa proposto.

4.1 Ambientes de Desenvolvimento: Outro aspecto a considerar so as escolhas das ferramentas de auxlio ao desenvolvedor. Alguns dos ambientes de desenvolvimento mas utilizados e que trazem maior produtividade na implementao so:

4.1.1 NETBEANS O NetBeans no atual mercado de IDEs de desenvolvimento considerado uma das melhores do mercado open source. Desenvolvida pela Sun Microsystems e mantida pela comunidade, a cada verso vem se mostrando uma madura e consistente ferramenta para desenvolvimento.

No desenvolvimento de aplicaes web essa IDE vem sendo uma excelente alternativa para aqueles que desejam desenvolver de forma rpida e simples suas aplicaes, por possuir sistema de depurao em tempo de desenvolvimento, mostrando as falhas de digitao, variveis no declaradas, mtodos inexistentes, importaes de bibliotecas entre outras funes.

4.1.2 WAMPSERVER WampServer um software publicado sob a GNU General Public License desenvolvido pela PHP Team. usado para instalar rapidamente no computador os softwares PHP 5, MySQL e Apache, disponibilizando suporte ao uso de scripts PHP localmente no windows. A verso da aplicao para sistema operacional Linux Lamp que contem todos os aplicativos e funcionalidades da verso plataforma windows.

4.1.3 DBDESIGNER Editor visual para criao de banco de dados mySQL que integra criao, modelagem, desenvolvimento e manuteno dos bancos em um ambiente simples e agradvel. Comparvel com produtos como Oracle's Designer, IBM's Relational Rose, CA Erwin. O DBDesigner OpenSource distribudo sobre a licena GPL.

4.2. Aplicao ARTIGOMVCPHP Com a evoluo da internet h uma crescente movimentao no desenvolvimento de sistema que sejam separados e desenvolvidos em camadas. Dessa forma, o problema proposto desenvolver um aplicativo para web divido em camadas para ter uma maior proteo de seu cdigo acesso rpidas e seguro a base de dados. Um aplicativo que na sua camada de apresentao ao browser do usurio no contenha scripts query que possam ser capturados e manipulados por hackers. Buscando a soluo de tal problema, ser adotado neste caso de uso o padro de projeto Model-View-Controller. Onde a aplicao ser dividida em camadas.
A Primeira Camada Model (modelo) ser codificada uma classe com o nome class.pessoa.php essa classe era responsvel pelo modelo de negcios da aplicao nela ser codificado os atributos, nome, endereo, bairro, cidade, uf, telefone, os mtodos get e set para cada atributo, e os mtodos para manipulaes do banco de dados atravs de strings query, o mtodo all( ) ser responsvel por efetuar uma consulta no banco de dados de todos os dados

cadastrados e armazenado em um array, o mtodo intoPessoa ( ) ser responsvel por pegar todos os dados instanciados no objeto pessoa e gravar no banco de dados, o mtodo alterPessoa ( ) ser responsvel por alterar os dados j cadastrados em banco atravs de um identificador que ser o idtbpessoa, o mtodo delPessoa( ) ser responsvel por excluir informaes cadastradas em banco atravs de um identificador que ser o idtbpessoa. A Segunda camada Controller (Controlador) ser responsvel pelo comportamento do aplicativo, mapeando o acesso aos mtodos contidos na class.pessoa.php a mesma ser codificada com o nome class.control.pessoa ela ter o atributo control que recebera a string que o usurio desejar ter acesso, o mtodo Controle ser responsvel por acessar o mtodo all ( ) da classe model, o mtodo cadPessoa ser responsvel pelo controle do mtodo intoPessoa ( ) da classe model, o mtodo alterPessoa ira controlar o mtodo alterPessoa ( ) da classe model e o mtodo delPessoa ira controlar o mtodo delPessoa ( ) da class model. A Terceira camada a responsvel por interagir com o browser do usurio ser codificada uma classe com o nome view_pessoa.php nela ter as chamadas do controlador pra visualizao de dados e manipulaes pelo browser do usurio onde o mesmo ter respostar em cdigo HTML no protocolo http. A Camada conexo com SGDB e banco, ser codificado uma classe php com o nome conexaoDB.php ela ser responsvel por estabelecer uma comunicao com o banco de dados artigodb e o SGDB MySQL. Antes e iniciar a programao dos cdigos com o auxilio da ferramenta de modelagem de banco de dados o DBDesigner ser criado um Diagrama de Entidades e Relacionamentos da tabela tbpessoa e depois sincronizar a modelagem com o banco para gerao da tabela modelada.

Figura 01 DER tbpessoa

Com o auxilio da IDE NetBeans ser criado um projeto de modelagem UML com o nome UMLArtigoMVCPHP para criao da representao do diagrama de classes.

Figura 02 Diagrama de Classes Projeto artigomvcphp

Utilizando a IDE NetBeans ser criado um projeto para web e php com o nome artigomvcphp e salvo na pasta C:\wamp\www\artigomvcphp\ onde foi salva as codificaes php. descritas abaixo, por meio do cdigo responsvel pela comunicao com SGDB MySQL e banco de dados:
conexaoDB.php <?php $local = 'localhost'; $login = 'root'; $senha = ''; $banco = 'artigodb'; mysql_pconnect($local, $login, $senha); mysql_select_db($banco); ?>

Logo a seguir, temos o cdigo responsvel pela primeira camada model (modelo):
class.pessoa.php <?php require('../config/conexaoDB.php'); class Pessoa { public $nome; public $endereco;

public $bairro; public $cidade; public $uf; public $telefone; public $idtbpessoa; protected function getNome(){ return $nome; } protected function getEndereco(){ return $endereco; } protected function getBairro(){ return $bairro; } protected function getCidade(){ return $cidade; } protected function getUf(){ return $uf; } protected function getTelefone(){ return $telefone; } protected function getIdtbpessoa(){ return $idtbpessoa; } protected function setNome($nome) { $this->nome = $nome; } protected function setEndereco($endereco) { $this->endereco = $endereco; } protected function setBairro($bairro) { $this->bairro = $bairro; } protected function setCidade($cidade) { $this->cidade = $cidade; } protected function setUf($uf) { $this->uf = $uf; } protected function setTelefone($telefone) { $this->telefone = $telefone; } protected function setIdtbpessoa($idtbpessoa) { $this->idtbpessoa = $idtbpessoa; } public function all() { $sql = "SELECT * FROM `tbpessoa`"; $result = mysql_query($sql); while($dados = mysql_fetch_array($result)) { $pessoa = new Pessoa();

$pessoa->setIdtbpessoa(array('idtbpessoa' => $dados['idtbpessoa'])); $pessoa->setNome(array('nome' => $dados['nome'])); $pessoa->setEndereco(array('endereco' => $dados['endereco'])); $pessoa->setBairro(array('bairro' => $dados['bairro'])); $pessoa->setCidade(array('cidade' => $dados['cidade'])); $pessoa->setUf(array('uf' => $dados['uf'])); $pessoa->setTelefone(array('telefone' => $dados['telefone'])); $arr[] = $pessoa; } return $arr; } public function intoPessoa($nome,$endereco,$bairro,$cidade,$uf,$telefone) { $sql = "INSERT INTO `tbpessoa` ( `idtbpessoa` , `nome`,`endereco`,`bairro`, `cidade`,`uf`,`telefone`) VALUES (NULL , '$nome','$endereco','$bairro','$cidade','$uf','$telefone');"; mysql_query($sql); } public function delPessoa($idtbpessoa){ $sql = "DELETE FROM `tbpessoa` WHERE `tbpessoa`.`idtbpessoa` = $idtbpessoa;"; mysql_query($sql); } public function alterPessoa($alteridtbpessoa,$alternome,$alterendereco,$alterbairro,$altercidade,$alteruf,$altertelefone){ if($alternome != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `nome` = '$alternome' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } if($alterendereco != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `endereco` = '$alterendereco' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } if($alterbairro != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `bairro` = '$alterbairro' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } if($altercidade != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `cidade` = '$altercidade' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } if($alteruf != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `uf` = '$alteruf' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } if($altertelefone != ''){ $sql= "UPDATE `artigodb`.`tbpessoa` SET `telefone` = '$altertelefone' WHERE `tbpessoa`.`idtbpessoa` =$alteridtbpessoa;"; mysql_query($sql); } } } ?>

O fragmento do cdigo responsvel pela segunda camada controller(Controlador) est colocado a seguir:
class.control.pessoa.php <?php

require('../model/class.pessoa.php'); class Control { public $control; public function Controle() { $this->control = new Pessoa(); return $this->control->all(); } public function alterPessoa($alteridtbpessoa,$alternome,$alterendereco,$alterbairro,$altercidade,$alteruf,$altertelefone){ if($alteridtbpessoa == ''){ print "=*Ao alterar uma pessoa, obrigatrio informar o ID.<br>"; }else{ $this->control = new Pessoa(); $this->control>alterPessoa($alteridtbpessoa,$alternome,$alterendereco,$alterbairro,$altercidade,$alteruf,$altertelefone); } } public function delPessoa($idtbpessoa){ if($idtbpessoa == '' ){ print "=* Se estiver tentando excluir uma pessoa, no esquea de informar o ID.<br>"; } else{ $this->control = new Pessoa(); $this->control->delPessoa($idtbpessoa); print " -Pessoa excluido com sucesso!.<br>"; } } public function cadPessoa($nome,$endereco,$bairro,$cidade,$uf,$telefone) { if($nome == '' || $endereco == '' ||$bairro == '' ||$cidade== '' ||$uf == '' ||$telefone == '') { print "=*Ao inserir um registro obrigatrio informar: Nome, endereco, bairro, cidade, uf, telefone <br>"; } else { $this->control = new Pessoa(); $this->control->intoPessoa($nome,$endereco,$bairro,$cidade,$uf,$telefone);

A seguir temos o fragmento do cdigo responsvel pela terceira camada view(Viso):


view_pessoa.php <?php require('../control/class.control.pessoa.php'); . . <body> <p>Gravar Informaes Pessoa</p> <form id="form1" name="form1" method="post" action=""> <table width="707" height="242" align="left"> <tr> <td colspan="2">Formulrio de Cadastro de Pessoas</td> </tr> <tr> <td width="61">Nome:</td> <td width="630"><label> <input name="nome" type="text" id="nome" size="102" maxlength="100" /> </label></td> </tr> <tr> <td>Endereo:</td> <td><input name="endereco" type="text" id="endereco" size="102" maxlength="100" /></td>

</tr> <tr> <td>Bairro:</td> <td><input name="bairro" type="text" id="bairro" size="52" maxlength="50" /></td> </tr> <tr> <td>Cidade:</td> <td><input name="cidade" type="text" id="cidade" size="102" maxlength="100" /></td> </tr> <tr> <td>UF:</td> <td><select name="uf" id="uf"> <option value="AM">AM</option> <option value="MT">MT</option> </select> <label></label></td> </tr> <tr> <td>Telefone</td> <td><input name="telefone" type="text" id="telefone" size="16" maxlength="14" /></td> </tr> <tr> <td height="43" colspan="2"><label> <input type="submit" name="button" id="button" value="Gravar" /> </label></td> </tr> </table> </form> <p>Alterar Informaes Cadastradas</p> <form id="form2" name="form2" method="post" action=""> <table width="707" height="242" align="left"> <tr> <td colspan="2">Formulrio de Manuteno de Pessoas</td> </tr> <tr> <td width="61">ID:</td> <td width="630"><label> <input name="alteridtbpessoa" type="text" id="alteridtbpessoa" size="13" maxlength="11" /> </label></td> </tr> <tr> <tr> <td width="61">Nome:</td> <td width="630"><label> <input name="alternome" type="text" id="alternome" size="102" maxlength="100" /> </label></td> </tr> <tr> <td>Endereo:</td> <td><input name="alterendereco" type="text" id="alterendereco" size="102" maxlength="100" /></td> </tr> <tr> <td>Bairro:</td> <td><input name="alterbairro" type="text" id="alterbairro" size="52" maxlength="50" /></td> </tr> <tr> <td>Cidade:</td> <td><input name="altercidade" type="text" id="altercidade" size="102" maxlength="100" /></td> </tr> <tr> <td>UF:</td>

<td><select name="alteruf" id="alteruf"> <option value="AM">AM</option> <option value="MT">MT</option> </select> <label></label></td> </tr> <tr> <td>Telefone</td> <td><input name="altertelefone" type="text" id="altertelefone" size="16" maxlength="14" /></td> </tr> <tr> <td height="43" colspan="2"><label> <input type="submit" name="button" id="button" value="Alterar" /> </label></td> </tr> </table> </form> <p>Exluir Informaes Cadastradas</p> <form id="form3" name="form3" method="post" action=""> <table width="707" height="98" align="left"> <tr> <td height="33" colspan="2">Formulrio de Excluso de Pessoas</td> </tr> <tr> <td width="61" height="29">ID:</td> <td width="630"><label> <input name="idtbpessoa" type="text" id="idtbpessoa" size="13" maxlength="11" /> </label></td> <td height="26" colspan="2"><label> <input type="submit" name="button" id="button" value="Excluir" /> </label></td> </tr> </table> </form> <p align="left">Lista dos Dados Cadastrados</p> <table width="1234" align="left"> <tr bordercolor="#FFFFFF" bgcolor="#333333"> <td width="68"><div align="left" class="style1">Cdigo</div></td> <td width="278"><div align="left" class="style1">Nome</div></td> <td width="223"><div align="left" class="style1">Endereo</div></td> <td width="156"><div align="left" class="style1">Bairro</div></td> <td width="288"><div align="left" class="style1">Cidade</div></td> <td width="32"><div align="left" class="style1">UF</div></td> <td width="143"><div align="left" class="style1">Telefone</div></td> </tr> <?php $c = new Control(); $arr = $c->Controle(); for ($i = 0; $i < count($arr); $i++) { ?> <tr bgcolor="#CCCCCC"> <td><div align="left" class="style2"> <?php print $arr[$i]->idtbpessoa['idtbpessoa']; . . print $arr[$i]->telefone['telefone']; ?> </div></td> </tr>

<?php } ?> </table> <p>&nbsp;</p> <p>&nbsp;</p> </body> </html>

Efetuando o acesso com o browser, pode ser visualizado o resultado da aplicao e envio de pedidos para manipulao de dados. A figura abaixo demonstra visualizao do browser cliente:

Figura 03 Tela do Browser

CONSIDERAES FINAIS O principal propsito deste artigo foi proporcionar ao leitor um estudo de caso que demonstrasse na pratica como utilizar um padro de projeto em uma aplicao web. O estudo foi realizado com a linguagem de programao PHP5 para codificao de suas classes.

Os padres de projetos vo mais alem do que a prpria programao do cdigo e da engenharia de seus diagramas, a sua principal busca a melhoria da lgica de soluo de problemas propostos reutilizando o padro em outras aplicaes. Havendo necessidade de criao de novas telas de cadastro bastaria ao desenvolvedor utilizar o mesmo padro adotado e testando para criao das classes de model, controller e view. Levando em considerao que um dos maiores problemas, falando em desenvolvimento de sistemas, no codificao inicial, mas sim a manuteno do cdigo, com o padro adotado no artigo o MVC isso seria solucionado j que ele trabalha em camadas facilitando a manuteno de suas telas lembrando que o plano de negcio estaria protegido contra possveis erros de codificao.

REFERNCIAS BIBLIOGRFICAS

DALLOGLIO, Pablo. PHP PROGRAMAO COM ORIENTAO A OBJETO: design patterns: So Paulo SP. Novatec Editora Ltda 2007. MELO, Alexandre Altair de. PHP PROFISSIONAL: design patterns, wampserver: So Paulo SP. Novatec Editora Ltda 2007. GONALVES, Edson. DESENVOLVENTO APLICAES WEB: model-viewcontroller: Rio de Janeiro RJ. Editora Cincia Moderna Ltda 2007. GONALVES, Edson. DESENVOLVENTO APLICAES WEB COM NETBEANS IDE 6: model-view-controller, netbeans: Rio de Janeiro RJ. Editora Cincia Moderna Ltda 2008.

Vous aimerez peut-être aussi