Sie sind auf Seite 1von 48

[Digite texto]

Sumrio
1. Linguagem de Banco de Dados (SQL) .......................................................................................................................................... 3 1.1. Conceito/Definio .................................................................................................................................................... 4 1.2. Banco de Dados Relacionais ...................................................................................................................................... 4 1.3. Operadores ................................................................................................................................................................. 4 1.3.1. Operadores Lgicos ............................................................................................................................................. 4 1.3.2. Operadores Relacionais ....................................................................................................................................... 4 1.3.3. Operadores Aritmticos ....................................................................................................................................... 4 1.4. Tipologia de Comandos SQL..................................................................................................................................... 5 1.4.1. Comandos DDL ................................................................................................................................................... 5 1.4.2. Comandos DML .................................................................................................................................................. 6 1.4.3. Comandos DQL ................................................................................................................................................... 7 1.4.4. Comandos DCL ................................................................................................................................................... 7 2. Lgica de Programao .................................................................................................................................................................... 9 2.1. Conceito/Definio .................................................................................................................................................. 10 2.2. Algoritmos ............................................................................................................................................................... 10 2.2.2. Desenvolvendo um Algoritmo ........................................................................................................................... 10 2.2.2.1. Regras de Construo .................................................................................................................................... 10 2.2.2.2. Anlise .......................................................................................................................................................... 10 2.2.2.3. Desenvolvimento da Lgica (Portugol) ........................................................................................................ 11 2.2.2.4. Representao Grfica .................................................................................................................................. 11 2.3. Estrutura de Dados ................................................................................................................................................... 12 3. Linguagem de Marcao (HTML) ................................................................................................................................................ 13 3.1. Conceito/Definio .................................................................................................................................................. 14 3.2. Comandos Introdutrios .......................................................................................................................................... 14 3.3. Criando um Formulrio ........................................................................................................................................... 15 4. Linguagem de Manipulao Dinmica (JavaScript) ............................................................................................................. 17 4.1. Conceito/Definio .................................................................................................................................................. 18 4.2. Comandos Introdutrios .......................................................................................................................................... 18 5. Modelagem Banco Dados (Diagramas) .................................................................................................................................... 19 5.1. Conceito/Definio .................................................................................................................................................. 20 5.2. Conceitos Principais Utilizados ............................................................................................................................... 20 5.2.1. Associao ............................................................................................................................................................... 20 5.2.2. Generalizao .......................................................................................................................................................... 20 5.3. Modelando Diagrama da Fase de Projeto ................................................................................................................ 20 6. Linguagem PHP Orientada Objeto ....................................................................................................................................... 22 6.1. Conceito/Definio .................................................................................................................................................. 23 6.2. Interfaces, Classe e Objeto ....................................................................................................................................... 24 6.2.1. Visibilidade ....................................................................................................................................................... 24 6.2.2. Variveis e Constantes ...................................................................................................................................... 25 6.2.2.1. Tipos de Variveis......................................................................................................................................... 25 6.2.2.2. Apontador This .......................................................................................................................................... 25 6.2.3. Camadas de Desenvolvimento (PHP) ................................................................................................................ 25 6.2.4. Rotina de Programao ...................................................................................................................................... 26 6.3. Herana, Polimorfismo e Encapsulamento .............................................................................................................. 26 6.3.1. Herana .............................................................................................................................................................. 26 6.3.1.1. Definio/Conceito ....................................................................................................................................... 26 6.3.1.2. Metodologia de Implementao .................................................................................................................... 26 6.3.2. Polimorfismo ..................................................................................................................................................... 28 6.3.3. Encapsulamento ................................................................................................................................................. 28 6.4. Estruturas de Controles ............................................................................................................................................ 28 6.4.1. Estruturas de Condies .................................................................................................................................... 28 6.4.2. Estruturas de Caso ............................................................................................................................................. 29 6.4.3. Estruturas de Repeties .................................................................................................................................... 30 6.4.3.1. Lao de Repetio Para (For) ........................................................................................................................ 30 6.4.3.2. Lao de Repetio Para Cada (Foreach) ....................................................................................................... 30 6.4.3.3. Lao de Repetio Enquanto (While) ........................................................................................................... 31 6.4.3.4. Lao de Repetio Faa Enquanto (Do .. While) .......................................................................................... 31 7. Projeto Exemplo ............................................................................................................................................................................... 32 7.1. Descrio ................................................................................................................................................................. 33

[Digite texto]

7.2. 7.3. 7.4. 7.5. 7.6. 7.7. 7.8. 7.9. 7.10. 7.11. 7.12. 7.13. 7.14.

Classe/Tabela Banco de Dados ................................................................................................................................ 33 Implementao Camada DAO (Conexo) ............................................................................................................... 33 Implementao Camada DTO (Modelagem) ........................................................................................................... 34 Implementao Camada DAO (Mtodos Manipulao Dados) ............................................................................... 35 Implementao Camada CTR (Mtodos de Controle Dados) .................................................................................. 37 Implementao Camada INT (Interface de Dados).................................................................................................. 38 Implementao Camada VIEW (Visual) ................................................................................................................. 39 Sesses e Controle de Login .................................................................................................................................... 41 Camada DTO ........................................................................................................................................................... 42 Camada DAO ........................................................................................................................................................... 43 Camada CTR ........................................................................................................................................................... 45 Camada INT ............................................................................................................................................................. 45 Camada VIEW ......................................................................................................................................................... 47

[Digite texto]

1. Linguagem de Banco de Dados (SQL)

[Digite texto]

1.1. Conceito/Definio
A SQL consiste na sigla de abreviao para Structured Query Language, ou traduzida para o portugus Linguagem de Consulta Estruturada, essa linguagem baseia-se em uma forma de pesquisa declarativa para bancos de dados relacionais. Possui vrios grupos de comando, aqui destacaremos os principais e mais utilizados sendo eles os grupos DDL, DML, DQL e o DCL.

1.2. Banco de Dados Relacionais


Esse tipo de Banco de Dados organiza seus dados atravs de relaes, onde, cada relao consiste em uma tabela, e cada coluna consiste em atributos e cada linha consiste em tuplas ou elementos da relao. Um conceito importante o de chave, pois, atravs dele se torna possvel a identificao e diferenciao de uma tupla, alm de acelerar o acesso aos elementos sendo possvel a utilizao de ndices. Na viso de organizao de dados, esse mtodo de organizao atravs de tabelas fornece um conceito simples e familiar para a estruturao dos dados, dentre esse e outros motivos que o conceito de Banco de Dados Relacionais tem tido muito sucesso.

1.3. Operadores
Baseia-se em algumas formas de comparaes e interaes feitas com dados provindos do Banco de Dados, so trs tipo de operadores mais utilizados, sendo eles, Lgico, Relacionais e Aritmticos.

1.3.1. Operadores Lgicos


Os operadores lgicos so utilizados para definio de condies para a produo de um resultado nico, sendo que uma linha s poder ser retornada caso o resultado do global da condio for verdadeiro. Operadores: Descrio: Retornar caso ambas condies sejam verdadeiras. AND Retornar caso uma das condies seja verdadeira. OR Retornar caso a condio negada seja verdadeira. NOT

1.3.2. Operadores Relacionais


Operadores Relacionais so usado para descrever uma condio que faz comparao de uma expresso a outra expresso. Abaixo a tabela de Operadores Relacionais: Operadores: = > >= <= <> Descrio: Igual a Maior que Maior ou igual a que Menor ou igual Diferente de

1.3.3. Operadores Aritmticos

[Digite texto]

So os operadores aritmticos comumente utilizados, os quais podem ser utilizados pelo SQL, porm somente podero ser utilizados em colunas do tipo numrico. Operadores: + * / Descrio: Soma Subtrao Multiplicao Diviso

1.4. Tipologia de Comandos SQL


Os comandos de manipulao de dados SQL foi dividido em Tipologias Textuais, facilitando a forma de utilizao e estudo, as quais seguem abaixo:

1.4.1. Comandos DDL


A abreviao DDL foi criada a partir da denominao de um grupo de comandos da linguagem SQL, a qual consiste em Data Definition Language, ou traduzido Linguagem de Definio de Dados. Esse grupo de comandos baseado principalmente em aes que permitem ao usurio definir novas tabelas e elementos. A maioria dos visualizadores de Banco de Dados tenta facilitar muito a vida do desenvolvedor em relao a esses comandos, pois cada dia mais esses visualizadores esto fazendo de uma forma mais dinmica o que antigamente era estaticamente comandos. Comando Create (Criao de Tabelas): Comando responsvel pela criao de tabelas dentro do banco de dados. Sintaxe (MYSQL): CREATE TABLE nometabela( campotabela INT NOT NULL AUTO_INCREMENT, campotabela2 VARCHAR(45) NOT NULL, campotabela3 VARCHAR(45) NOT NULL, campotablea4 VARCHAR(45) NOT NULL, PRIMARY KEY (`campotabela`) ) ENGINE = InnoDB; Comando Alter (Alterao de Tabelas): Comando responsvel pela alterao de componentes de uma tabela dentro do banco de dados. Sintaxe (MYSQL): ALTER TABLE nometabela ADD colunanova int; Comando Drop (Excluso de Tabelas): Comando responsvel pela excluso de tabelas dentro do bando de dados. Sintaxe: DROP TABLE `nometabela`; Dentre os comandos acima, existe outros que fazem parte do grupo DDL, porm no so muito utilizados os quais so: o Create Index, responsvel pela criao de ndices dentro de um banco de dados, o Create View, responsvel pela criao de vises dentro de um banco de dados, o Alter Table, responsvel pela alterao de caractersticas de uma tabela de um banco de dados, o Alter Index, responsvel pela

[Digite texto]

alterao do index criado em uma tabela do banco de dados, o Drop Index, responsvel pela excluso de index criado em uma tabela, o Drop View, responsvel pela excluso da viso criada em um banco de dados.

1.4.2. Comandos DML


A abreviao DML foi criada a partir da denominao de um grupo de comandos da linguagem SQL, a qual consiste em Data Manipulation Language, ou traduzido Linguagem de Manipulao de Dados. Esse grupo de comandos baseado principalmente em aes de manipulao de registros de uma tabela, esse grupo formado por:

Comando Insert (Insero): Comando responsvel pela insero de dados em uma tabela. Sintaxe: INSERT INTO nometabela(campo1, campo2, campo3) VALUES (valor1, valor2, valor3); Regras: - valores numricos no utilizam as aspas simples, em valores de texto e data obrigatrio a utilizao das aspas simples. - valores de data alm de utilizar as aspas, devem ser inseridas na forma inglesa curta. Ex: 2012-05-31. - valores numrico com decimais devem ser inseridos sem separao de milhares e com uma virgula na separao decimal (mtodo ingls). Ex: 1878.90.

Comando Delete (Remoo) Comando responsvel pela remoo de dados de uma tabela. Sintaxe: DELETE FROM nometabela WHERE comparacao=1; Regras: - quanto aos dados utilizam-se as mesmas normas do insert. Recomendaes: - esse comando por ser um comando de remoo de dados, se torna necessrio um maior cuidado, pois, remover dados de um banco uma ao de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado. - utilizao mais comum desse comando sempre acompanhado da instruo WHERE.

Comando Update (Atualizao): Comando responsvel pela atualizao de dados de uma tabela. Sintaxe: UPDATE nometabela SET nomecampo=valorcamponovo, camponovo2 WHERE comparao=1; nomecampo2=valor

[Digite texto]

Regras: - quanto aos dados utilizam-se as mesmas normas do insert. Recomendaes: - esse comando por ser um comando de remoo de dados, se torna necessrio um maior cuidado, pois, remover dados de um banco uma ao de alto risco para os dados, recomenda-se um backup sempre quando for ser utilizado. - utilizao mais comum desse comando sempre acompanhada da instruo WHERE.

1.4.3. Comandos DQL


A abreviao DQL foi criada a partir da denominao de um grupo de comandos da linguagem SQL, a qual consiste em Data Query Language, ou traduzido Linguagem de Consulta de Dados. Esse grupo de comandos baseado principalmente em aes que permitem ao usurio definir criar consultas de tabelas no banco de dados, esse grupo consiste em um nico comando o SELECT, esse comando em algumas bibliografias tambm constatado como integrante do grupo DML, pelo fato de ser um manipulado de dados tambm, sendo assim levando em considerao essas bibliografias pode se presumir que o SELECT seja um comando DQL e DML. Comando Select (Consulta de Dados): Comando responsvel pela consulta de dados de uma ou varias tabelas no banco de dados. Sintaxe: SELECT coluna, coluna1, coluna2 FROM nometabela <CLAUSULAS>. Principais Clusulas: As clusulas complementam o SELECT adicionando condies e outros recursos ao sua consulta, as clusulas disponveis so: WHERE: responsvel por determinar a condio que ser aplicada na consulta, est expresso poder conter operadores lgicos, aritmticos e relacionais. ORDER BY: responsvel por ordenar os dados retornados na consulta criada atravs do SELECT, onde pode se definir uma ou mais coluna como referencia de ordem. GROUP BY: responsvel por agrupar os dados contidos na consulta

1.4.4. Comandos DCL


A abreviao DCL foi criada a partir da denominao de um grupo de comandos da linguagem SQL, a qual consiste em Data Control Language, ou traduzido Linguagem de Controle de Dados. Esse grupo responsvel pelo controle de aspectos de autorizao de manipulao do banco e licenas de usurios para controlar o acesso aos dados. Comando Grant (Garantir Privilgios): Comando responsvel por definir os privilgios de um usurio criado no Banco de dados.

[Digite texto]

Sintaxe: GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'senha; Recomendao: - Utilizar somente quando houver criao de usurios novos ou alteraes de privilgios. Comando Revoke (Revogar Privilgios) Comando responsvel por revogar ou barrar privilgios de um usurio no Banco de dados. Sintaxe: REVOKE <comando> ON <tabela> TO <usurio>; Recomendao: - Utilizar somente quando houver a necessidade de retirar privilgios de algum usurio ou restringir permisso de acesso aos dados armazenados.

[Digite texto]

2. Lgica de Programao

[Digite texto]

2.1. Conceito/Definio
Lgica de Programao baseia-se em uma forma de escrever um programa de computador utilizando uma linguagem de fcil entendimento para ns seres humanos, esse tipo de lgica necessrio para todas as pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, pois permite definir uma sequncia lgica para um bom e melhorado desenvolvimento.

2.2. Algoritmos
Trata-se de uma sequncia finita de passos que um sistema deve seguir para a execuo de alguma tarefa, pode se comparar um algoritmo com uma receita de bolo onde voc segue o passo a passo at obter o resultado final que no caso seria o bolo pronto.

2.2.1. Conceito/Definio
Um programa de computador baseado em um algoritmo escrito numa linguagem de computao como Pascal, Java, PHP, C#, Visual Basic, etc..., sendo assim o estudo de Algoritmos se torna imprescindvel para os interessados em aprender alguma das linguagens de programao, pois como j dito anteriormente o Algoritmo define toda a sequncia de acontecimentos dentro de um sistema, at a obteno de um resultado final satisfatrio.

2.2.2. Desenvolvendo um Algoritmo


Os algoritmos so descritos em uma linguagem conhecida como pseudocdigos, este nome uma aluso posterior implementao em uma linguagem de programao, utilizamos como pseudocdigo a nossa linguagem Portugol, lembrando que o desenvolvimento de um algoritmo na vinculado a nenhuma linguagem de programao especifica, pois o mesmo algoritmo poder ser utilizado em qualquer linguagem de programao. Uma caracterstica bsica do Algoritmo sua fcil interpretao de todos os passos a serem seguidos e implementados.

2.2.2.1. Regras de Construo


Para a escrita correta de um Algoritmo precisa-se descrever a sequencia dos acontecimentos, utilizando uma maneira de fcil compreenso e com bastante objetividade, algumas regras podem ajudar como: - Utilizar somente um verbo por frase. - Imaginar que voc est desenvolvendo um algoritmo para pessoas que no trabalha com informtica. - Utilizar frases curtas e simples. - Ser Objetivo. - No utilizar palavras que cause indecises.

2.2.2.2. Anlise

10

[Digite texto]

Qualquer tarefa que siga um determinado padro poder ser descrita utilizando um algoritmo, como essas: COMO FAZER PARA ESTACIONAR O CARRO ou ento, CALCULAR A MDIA DE APROVAO DE ALUNOS EM UM CURSO DE INFORMTICA Para isso devemos primeiramente dividir os problemas em trs fases fundamentais. ENTRADA PROCESSAMENTO SAIDA

Sendo que: ENTRADA: So os dados de entrada do algoritmo. PROCESSAMENTO: So os procedimentos usados para chegar ao resultado final. SADA: So os dados j processados.

2.2.2.3. Desenvolvimento da Lgica (Portugol)


Imagine o seguinte problema: Calcular o resultado final dos alunos, onde sero informadas as notas dos quatro bimestres.

onde Ser calculado a mdia, caso seja maior ou igual a 7 o aluno ser Aprovado, caso contrrio, ser Reprovado.

Para criar o algoritmo proposto, faremos trs perguntas: a) Quais so os dados de entrada? R: Os dados de entrada so N1, N2, N3 e N4, onde N=Nota. b) Qual ser o processamento a ser utilizado? R: O procedimento ser somar todos os dados de entrada e dividi-los por 4 (quatro), ou seja, (P1 + P2 + P3 + P4) / 4 c) Quais sero os dados de sada? R: O dado de sada ser a mdia final.

Abaixo o Algoritmo desenvolvido: Inicio; Entrada com 4 notas; Calcular a mdia; Se Media maior ou igual a 7; Se Maior imprime Aprovado; Se Menor imprime Reprovado; Fim;

2.2.2.4. Representao Grfica


Inicio ->
11

[Digite texto]

Entrada com 4 Notas ->

Calcular a mdia ->

Se a Mdia >= 7 ->

Aprovado Reprovado ->

Fim ->

2.3. Estrutura de Dados


Apesar de no se utilizar definio de tipos para as variveis ou constantes em PHP, de grande importncia o conhecimento de pelo menos o tipos de dados mais utilizados, os quais so: Inteiros: Abrange dados numricos positivos ou negativos, excluindo-se qualquer fracionrio. Reais: Abrange dados positivos, negativos e nmeros fracionrios. Caracteres: Abrange caracteres (letras) sendo capazes de armazenar uma sequencia de caracteres. Lgicos: Abrange dados do tipo lgico, sendo apenas duas possibilidades: Verdadeiro (true) e Falso (false).

12

[Digite texto]

3. Linguagem de Marcao (HTML)

13

[Digite texto]

3.1. Conceito/Definio
HTML a abreviao para a expresso HyperText Markup Language, e foi desenvolvida por Tim Barners Lee na dcada de 1990, consiste em uma linguagem de marcao utilizada para criao de paginas WEB, onde criamos paginas baseadas em HTML, que podem ser interpretados por navegadores web, suas especificaes so atualmente controladas pela W3C (World Wide Web Consortium). Nessa Linguagem os elementos so definidos atravs de tags (etiquetas ou marcaes), que tem a funo de formatao de texto, formulrios, links, imagens, tabelas, entre outros. Os browsers (navegadores) tem a funo de identificar essas tags e apresentarem de uma forma especfica cada uma, a criao de um documento HTML e to simples que pode ser feita no Bloco de Nota (Windows) ou Editor de Texto (Linux e Mac). Como tudo em informtica a linguagem HTML tambm possui suas evolues as quais so mais atuais a XHTML e HTML5, onde a XHTML baseia-se em uma linguagem HTML com uma sintaxe (forma de escrita) mais rigorosa e padronizada seguindo as caractersticas do XML e o HTML5 baseia-se na quinta verso do HTML que traz novos recursos, principalmente na manipulao de contedo grfico e multimdia, esta verso do HTML est muito robusta, porm atualmente h algumas incompatibilidades com os navegadores.

3.2. Comandos Introdutrios


Os comandos HTML so formados por tags, as quais tem funes individuais, abaixo conheceremos as tags mais utilizadas em desenvolvimento de paginas de administrao, as quais so: Inicio Tag: <html> Fim Tag: </html> Descrio: Marcador da codificao do documento HTML, necessrio para o inicio da codificao de todas as paginas, ela comportar todas as outras tags. Marcador do cabealho do documento HTML, comporta algumas tags dentre elas as de script e styles. Marcador do titulo do documento HTML, responsvel pela definio do titulo da pagina. Marcador do corpo do documento HTML, a qual comportar as tags responsveis por exibies e capturas de dados. Marcador de paragrafo do documento HTML, responsvel pela tabulao dos dados exibidos na pagina. Marcador de formatao, responsvel por criao de alguns formatos de ttulos. Existem tambm o <h2>, <h3>, <h4>, <h5> e <h6>. Marcador utilizado para delimitar um formulrio, o qual tem a responsabilidade de capturar informaes enviadas pelo usurio e transmitir atravs dos mtodos POST ou GET. Marcador utilizado para delimitar a rea onde se encontraro os campos do formulrio que capturaro os dados enviados pelo usurio. Marcador utilizado para a criao de tabelas. Marcador utilizado para a criao de linhas dentro de uma tabela. Marcador utilizado para a criao de colunas formatadas dentro de uma tabela.

<head> <title> <body>

</head> </title> </body>

<p> <h1>

</p> </h1>

<form>

</form>

<fieldset>

</fieldset>

<table> <tr> <th>

</table> </tr> </th>

14

[Digite texto]

<td> <meta> <input> <b> <i> <u> <a href>

</td> </b> </i> </u> </a>

Marcador utilizado para a criao de colunas comuns dentro de uma tabela. Marcador utilizado para descriminao da codificao de caracteres a ser utilizada no documento HTML. Marcador utilizado para criao de uma forma de entrada de dados. Marcador utilizado para Negritar alguma parte do texto a ser exibido. Marcador utilizado para Itlico. Marcador utilizado para Sublinhar alguma parte do texto a ser exibido. Marcador responsvel pela criao de links de navegabilidade no documento html.

3.3. Criando um Formulrio


<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Cadastro de Clientes</title> </head> <body> <form id="cadCliente" name="cadCliente" action="../INT/ClienteINT.php" method="POST"> <fieldset> <p><h1>Cadastrar Clientes</h1></p> <p><h5>* CAMPOS OBRIGATRIOS</h5></p> <p>Nome: <input type="text" name="nome" id="nome" value="" size="50" /> <b>*</b></p> <p>Razo Social: <input type="text" name="razao_social" id="razao_social" value="" size="50" /></p> <p>RG/IE: <input type="text" name="rg_ie" id="rg_ie" value="" size="50" /></p> <p>CPF/CNPJ: <input type="text" name="cpf_cnpj" id="cpf_cnpj" value="" size="50" /></p> <p>Endereo: <input type="text" name="endereco" id="endereco" value="" size="50" /></p> <p>Numero: <input type="text" name="numero" id="numero" value="" size="50" /></p> <p>Bairro: <input type="text" name="bairro" id="bairro" value="" size="50" /></p> <p>Cidade: <select id="cidade" name="cidade"> <option value="0">Fernandpolis</option> <option value="1">Macednia</option> <option value="2">Meridiano</option> </select> <b>*</b></p> <p>Observaes: <br/> <textarea name="obs" id="obs" rows="4" cols="50"> </textarea></p> <p><input type="submit" id="Cadastrar" name="Cadastrar" value="Cadastrar" /></p>'; </fieldset>

15

[Digite texto]

</form> </body> </html>

16

[Digite texto]

4. Linguagem de Manipulao Dinmica (JavaScript)

17

[Digite texto]

4.1. Conceito/Definio
A Linguagem JavaScript consiste em uma linguagem baseada em scripts e padronizada pela ECMA International (Associao Especializada na Padronizao de Sistemas de Informao), foi criada por Brendan Eich e surgiu em 1995 como linguagem de script cliente-slide de paginas web, trata-se de uma linguagem dinmica, orientada a objeto e criada com a sintaxe similar linguagem C, onde podemos utilizar mtodos e funes dinmicas para alterao e modelagem da pagina, ou seja, uma linguagem capaz de modificar a seu documento HTML em modo de execuo com participao do usurio. Sendo assim, com o uso deste tipo de linguagem se torna possvel a manipulao de elementos HTML, criao de alertas para o usurio, etc.. isso tudo feito a partir de uma requisio que poder ser ou no ser feita pelo usurio. O JavaScript muito bom para a interao com o usurio, uma vez que ele pode responder a aes rapidamente, tornando uma aplicao mais interativa, alm de detectar aes do usurio que o HTML sozinho no poderia, tais como teclas pressionadas Apesar de conter Java no nome, a linguagem JavaScript distinta da linguagem Java e apresenta recursos no disponibilizados em Java ou C++, os scripts desenvolvidos em JavaScript so muito populares e amplamente integrados em pginas web devido facilidade de interao com o Document Object Model (DOM) da pgina. Uma linguagem de script tem a funcionalidade de ser executada no interior de programas ou de outra linguagem de programao. Outras linguagens usadas como script so: ActionScript, PHC, Python, VBScript, entre outras

4.2. Comandos Introdutrios


Para a utilizao do JavaScript recomenda-se que os cdigos sejam colocados diretamente na tag head do HTML ou criado um arquivo .js (JavaScript) e linkado na head. <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Exemplo JavaScript</title> <script type=text/javascript> function msg() { //Criao de Funo sem PARAMETROS alert(Mensagem JavaScript); //Criao de Mensagem } function excluir(i){ //Criao de Funo com PARAMETROS (i) if(confirm("Excluir)){ //Executa a Excluso } } </script> </head> <body> <h1>CORPO DA PAGINA</h1> </body> </html>

18

[Digite texto]

5. Modelagem Banco Dados (Diagramas)

19

[Digite texto]

5.1. Conceito/Definio
Diagramas so representaes grficas que auxiliam na anlise e desenvolvimento de um sistema, existem muitos tipos de diagramas, mas durante a programao utilizaremos os diagramas estruturais, dentre esse tipo ser utilizado o Diagrama de Classe, para a criao de um rascunho de como seria modelado o Banco de Dados,

5.2. Conceitos Principais Utilizados


Apesar de existirem vrios tipos de ligaes de classe as mais utilizadas so as Associaes e Generalizaes.

5.2.1. Associao
A associao e a forma mais simples de ligao de Classe, porem necessrio se definir a multiplicidade dessa associao a qual pode variar, esse tipo de ligao possui tambm alguma regras para auxiliar o desenvolvimento do Banco de Dados, as quais esto expressa na tabela abaixo. Multiplicidade 11 *1 1* ** Regra Aplicada O campo de ligao fica na Classe com a multiplicidade 1, ou seja, qualquer uma delas. O campo de ligao fica na Classe com a multiplicidade 1. O campo de ligao fica na Classe com a multiplicidade 1. Ocorre a diviso da ligao, e a criao de uma nova classe para gerenciar esse tipo de ligao, sendo assim, a diviso resultante ser equivalente a duas 1 *.

5.2.2. Generalizao
Mais conhecida como Herana, essa forma de relacionamento pode ser facilmente implementada, pois como o prprio nome diz ela ocorre quando uma classe herda os atributos de uma classe mais genrica, alm disso a Herana ou Generalizao no possui multiplicidade, fazendo assim com que os filhos automaticamente recebam o campo de ligao, pois, por se tratarem de filhos eles receberam as caractersticas da classe pai.

5.3. Modelando Diagrama da Fase de Projeto

20

[Digite texto]

21

[Digite texto]

6. Linguagem PHP Orientada Objeto

22

[Digite texto]

6.1. Conceito/Definio
PHP a sigla de Hipertext Preprocesor, trata-se de uma programao do lado do servidor e independente de plataforma, rpida, com uma grande livraria de funes e muita documentao, foi criado originalmente em 1994 por Rasmus Lerdorf, mas como o PHP esta desenvolvimento em poltica de cdigo aberto, ao longo de sua histria teve muitas contribuies de outros desenvolvedores. Linguagens que trabalham do lado do servidor consistem naquelas que se executam no servidor web, antes da pagina ser enviada atravs da Internet ao cliente, linguagens que executam no servidor podem realizar acessos a base de dados, conexes em rede e outras tarefas para criar a pagina final que ser vista pelo cliente, porm essa pagina enviada ao cliente ter em seu corpo comandos HTML, pois ser o resultante da execuo PHP, sendo assim compatvel com todos os browsers. Abaixo uma Ilustrao de como feita a comunicao PHP com o servidor e a devoluo para o cliente:

Esquema do funcionamento das pginas PHP

PHP se escreve dentro do cdigo HTML, o que o faz realmente fcil de utilizar, assim como ocorre com o popular ASP de Microsoft, porm com algumas vantagens como sua gratuidade, independncia de plataforma, rapidez e segurana. Qualquer pessoa pode baixar atravs da pgina principal de PHP www.php.net e de forma gratuita, um mdulo que faz com que nosso servidor web compreenda os scripts realizados nesta linguagem. independente de plataforma, visto que existe um mdulo de PHP para quase qualquer servidor web. Isto faz com que qualquer sistema possa ser compatvel com a linguagem e significa uma vantagem importante, j que permite levar o site desenvolvido em PHP de um sistema a outro sem praticamente nenhum trabalho. O PHP, no caso de estar montado sobre um servidor Linux ou Unix, mais rpido que ASP, dado que se executa em um nico espao de memria e isto evita as comunicaes entre

23

[Digite texto]

componentes COM que se realizam entre todas as tecnologias implicadas em uma pgina ASP. Algumas das principais caractersticas que vem destacando o PHP no mercado e a grande compatibilidade com as bases de dados mais comuns, e suas funes de envio de correio eletrnico, upload de arquivos, criao de arquivos dinamicamente, dentre outras.

6.2. Interfaces, Classe e Objeto


A Programao Orientada a Objetos foi desenvolvida por Alan Kay, que desenvolveu a linguagem de programao Smalltalk, mas mesmo antes desta criao j existiam alguma ideias da Programao Orientada a Objeto, e essas j estavam sendo aplicadas, sendo assim, a primeira linguagem onde se utilizou realmente essa ideia foi a linguagem Simula 67, criada por Ole Johan Dahl e Kristen Nygaard em 1967. Com base no descrito acima podemos perceber que o Paradigma de Programao Orientada a Objeto, j bastante antigo, mas s atualmente que vem sendo a ceito e implementado em grandes empresas de desenvolvimento, alguns exemplos de linguagens modernas que utilizam essa idia so: Java, C#, C++, Object Pascal (Delphi), Ruby, Python, Lisp, PHP, dentre outras. Porm a maioria delas adotar parcialmente a idia, dando espao para o antigo modelo procedural de programao tambm. Ento j que conhecemos uma pequena parte da historia da Orientao a Objeto, vamos definir seus principais componentes: Interfaces, Classes e Objetos. Interfaces: consiste, em basicamente um molde para a criao de uma classe, pode ser utilizada com o intuito de proteo de cdigo, bem como o intuito de reaproveitamento. Classes: consiste, na estrutura fundamental para que se possa definir novos objetos, pois atravs desta se torna possvel a criao de novos objetos, uma classe definida em cdigo-fonte, a qual deve possuir nome, um conjunto de atributos e mtodos que realizam algum tipo de ao, podendo gerar ou no um resultado. Objeto: como j expressado anteriormente, o objeto basicamente uma varivel criada a partir de uma classe, essa varivel ter a possibilidade de efetuar acessos a funes e variveis da classe desde que os mesmos estejam com a visualizao public, ou protected, a quais ser discutidas nos prximos itens.

6.2.1. Visibilidade
Como o prprio nome j descreve, visibilidade baseia-se na forma que a classe criada se comportar nos sistemas, no caso possumos trs nveis de visibilidade, lembrando que essas visibilidade podem ser aplicadas tanto a mtodos, quanto a variveis. Formas de Visibilidades Esta forma de visualizao permite que classes de qualquer outra camada de seu projeto tenha acesso a varivel ou funo criada. Esta forma de visualizao permite que somente classes da mesma camada da classe onde esta sendo criada essa varivel ou tenha o acesso. Esta forma de visualizao, amplamente utilizada na metodologia de Encapsulamento, a qual somente permite que a varivel ou funo criada somente seja acessada a partir da mesma classe onde foi criada.

PUBLIC

PROTECTED

PRIVATE

24

[Digite texto]

6.2.2. Variveis e Constantes


Variveis e Constantes so de fcil entendimento, pois varivel, basea-se na criao de um elemento dentro de um programa e esse elemento poder receber um valor e com o tempo esse valor poder ser modificado, no caso da constante, cria-se um elemento o qual recebe um valor e no poder de forma nenhuma ser alterado.

6.2.2.1. Tipos de Variveis


Tipos de variveis no condizem somente com o tipo de dados que essa varivel poder receber, pois nesse caso o PHP dinmico. Mas as variveis podem ser tratadas das seguintes formas: Variveis Parmetros: so variveis que as funes necessitam para que possam executar alguma determinada ao. Variaveis Globais: so variveis criadas logo aps a criao da classe e essa variveis podem ser utilizadas em qualquer funo dessa classe, caso essa varivel seja public poder ser utilizada em outras classes tambm. Variaveis Locais: so variveis criadas dentro de uma funo e esta somente ser acessvel dentro da funo, sendo assim aps o final da funo essa varivel deixar de existir. Variveis Objetos: como j estudado, so variveis criadas a partir de classes, e essas variveis passam a ter acesso a todos os mtodos da classes a partir qual foi criada, essa variveis podero assumir a forma de: Variveis Objeto Parmetros, Variveis Objeto Global, Variveis Objeto Local.

6.2.2.2. Apontador This


O apontador this, utilizado para diferenciar uma varivel global de uma varivel local basicamente, pois durante a codificao poderemos utilizar variveis com a mesma nomenclatura.

6.2.3. Camadas de Desenvolvimento (PHP)


No modelo baseado em MVC, que utilizaremos, trabalharemos com 5 camadas as quais so: Camada VIEW: conhecida como Viso, tem como responsabilidade o armazenamento dos arquivos de manipulao visual, tendo assim contato direto com o usurio. Camada INT: conhecida como Interface, tem como responsabilidade a manipulao de variveis provindas do usurio e mensagens destinadas ao usurio. Camada CTR: conhecida como Controle, tem como responsabilidade a manipulao de variveis providas da Interface, criao de objetos de modelagem das mesmas, e o envio deste objeto para a camada responsvel pela manipulao do banco. Camada DTO: conhecida como Modelagem, tem como responsabilidade a modelagem das tabelas do Banco de Dados, onde se utiliza metodologias como o encapsulamento para a manipulao das variveis que transitaram at o seu destino final. Camada DAO: conhecida como Manipulao do Banco de Dados, tem como responsabilidade o envio de todos os comandos destinados ao Banco de Dados, dentre eles esto todos os Inserts, Updates, Deletes e Selects.

25

[Digite texto]

6.2.4. Rotina de Programao


Basicamente consiste em uma forma de agilizar o processo de aprendizagem montando uma rotina a qual montar o fluxo correto de dados provenientes do Usurio, o que se entende por rotina, simplesmente uma caminho ou receita a ser repetido varias vezes, abaixo est expressa a rotina que utilizaremos para a fixao da linguagem: Rotina de desenvolvimento para inicio de Projeto: DAO criao da classe/interface conexo. DTO modelagem de uma tabela. DAO criao de mtodos de gerencia de dados da tabela modelada. CTR criao de controle de dados da tabela modelada. INT criao de Interface da tabela modelada. VIEW criao visual da tabela modelada. Rotina de desenvolvimento continuao de Projeto: DTO modelagem de uma tabela. DAO criao de mtodos de gerencia de dados da tabela modelada. CTR criao de controle de dados da tabela modelada. INT criao de Interface da tabela modelada. VIEW criao visual da tabela modelada

6.3. Herana, Polimorfismo e Encapsulamento


Esses so alguns dos conceitos de relacionamentos de classes ou tabelas mais utilizados, que passaram a ser desenvolvido com mais exatido e compreenso com a utilizao da Orientao a Objeto.

6.3.1. Herana
6.3.1.1. Definio/Conceito
A Herana como j explicado, ocorre quando uma classe recebe os atributos de outra classe mais genrica podendo assim acessar os mtodos dessa classe genrica como se fosse mtodos dela prpria. Existem varias formas de implementar de uma herana na codificao da linguagem de programao, como sempre se ouve, ningum tem a mesma lgica, ento adiante veremos a explicao de uma forma de implementao de Herana utilizada atualmente.

6.3.1.2. Metodologia de Implementao


Abaixo teremos a descritiva de uma das formas de implementao de uma herana, essa feita de acordo com o seguinte relacionamento:

26

[Digite texto]

Implementao Descritiva: 1. Cria-se a Modelagem (DTO) das todas as classes neste relacionamento, adicionando a implementao do extends na modelagem do Funcionrio. 2. Acompanhe a Hierarquia de Objeto, onde temos um Objeto Estado dentro do Objeto Cidade, e por sua vez temos um Objeto Cidade dentro do Objeto Pessoa, que por sua vez est fazendo uma Herana com o Objeto Funcionrio, sendo assim possvel dizer que o Objeto Funcionrio possui um objeto Cidade, e esse Objeto Cidade possui um Objeto Estado. 3. Na Camada DAO, cria-se as Interfaces de todas classes neste relacionamento, mas para o foco ficar na Herana trabalharemos com a DAO do Pessoa e Funcionrio. 3.1. Na DAOIMP do Pessoa, cria-se normalmente os mtodos de movimentao de dados, nas pesquisas torna-se necessrio a pesquisa pelo campo cpf_cnpj, o qual como todos os outros retornar o id da pessoa, caso haja cadastrada. 3.2. Na DAOIMP do Funcionrio, cria-se os mtodos de movimentao de dados, porm esse ser um pouco diferente dos demais: 3.2.1. Temos pela frente 4 casos a serem tratados, porm um deles no ser uma vez que a prpria herana o eliminar, os quais so: 3.2.1.1. Existe pessoa, porm no existe Funcionrio, no caso exemplo de um cliente vir a ser um funcionrio, lembrando que no poder se repetir dados em pessoa, para que no haja problemas de normalizao de dados. 3.2.1.2. Existe pessoa, existe Funcionrio, no caso exemplo de um cadastro de Funcionrio vir a ser Alterado.

27

[Digite texto]

No existe pessoa, no existe funcionrio, no caso de uma nova pessoa estar sendo inserida no cadastro. 3.2.1.4. No existe pessoa, existe funcionrio, este caso a prpria modelagem do banco no permite, por no ser possvel a existncia de uma classe filha sem uma classe pai. 3.2.2. Na Implementao do DAOIMP, do Funcionrio primeiramente haver a separao dos dados que sero enviados a tabela pai, atravs de um objeto mais genrico, com esses dados separados, feita a pesquisa na tabela genrica (Pessoa) atravs do cpf_cnpj. 3.2.2.1. Caso haja resultado: Ser feita a pesquisa em Funcionrio, pelo id de Pessoa retornado da pesquisa anterior. 3.2.2.1.1. Caso haja resultado: Ser efetuado duas alteraes, uma na tabela Pessoa, outra na Tabela Funcionrio. 3.2.2.1.2. Caso no haja resultado: Ser efetuado uma alterao na tabela Pessoa, pois ela j existe, e aps ser efetuado uma insero na tabela Funcionrio, com o id restaurado da pesquisa em Pessoa. 3.2.2.2. Caso no haja resultado: Ser efetuado duas inseres, sendo um na Tabela Pessoa e outro na Tabela Funcionrio. 3.2.3. Na Camada CTR, INT e VIEW, haver somente a implementao da classe Funcionario. 3.2.4. Fim.

3.2.1.3.

6.3.2. Polimorfismo
Polimorfismo consiste no principio de que as classe que derivam de uma nica classe base, so capazes de invocar mtodos que, embora apresentem a mesma assinatura (nome), podem se comportar de maneira diferente para cada uma das classes derivadas, utilizado para selecionarmos de forma dinmica as funcionalidades de uma aplicao. Basicamente, atravs do polimorfismo os mesmo atributos e objetos podem ser utilizados em objetos distintos, porm, com implementaes lgicas distintas.

6.3.3. Encapsulamento
uma tcnica muito utilizada na Orientao a Objeto, pois ela capaz de ocultar detalhes internos do funcionamento dos mtodos de uma classe, pois os conhecimentos dos mesmos so desnecessrios para o ponto de vista de um objeto, uma famosa aplicao do Encapsulamento a gerao dos sets e gets, na camada de Modelagem de Banco (DTO).

6.4. Estruturas de Controles


So lgicas de comandos criados, afim de que o Sistema faa uma determinada ao atravs de algumas orientaes.

6.4.1. Estruturas de Condies

28

[Digite texto]

Esse tipo de Estrutura amplamente utilizada, pois ela aplica uma condio e dependendo do retorno dela torna-se possvel a criao de dois possveis caminhos, no ambiente de programao ela e conhecida como Se, ou em forma de comando mesmo o If, abaixo alguns exemplos de utilizaes. Exemplo 1: if... else.. <?php $a=2; $b=3; if($a>$b){ echo numero a maior; }else{ echo numero b maior; } ?> Exemplo 2: if... else if... else.. <?php $a=2; $b=3; if($a>$b){ echo numero a maior; }else if($b>$a){ echo numero b maior; }else{ echo so iguais; } ?>

6.4.2. Estruturas de Caso


Esse tipo de Estrutura utilizada em condies onde temos muitas possibilidades e essa possibilidade pode ser tratada de uma forma mais simples utilizando a Estrutura de Caso, ou mais conhecida em programao como switch case, abaixo um exemplo de utilizao: <?php $a=1; switch ($a) { case 1: echo Entrei caso 1; break; case 2: echo Entrei caso 2; break; case 3: echo Entrei caso 3; break; default:
29

[Digite texto]

echo Entrei caso Padro; break; } ?>

6.4.3. Estruturas de Repeties


Estrutura muito utilizada, pois ela possibilita a repetio de um comando ou uma coleo de comandos de forma finita ou baseado em uma condio, abaixo esto listadas as estruturas atuais:

6.4.3.1.

Lao de Repetio Para (For)

Consiste em uma estrutura, onde se constri um lao finito onde ser expresso um inicio e se possui um fim previsto, a estrutura principal desse tipo de lao baseia-se em: for(valor inicial; comparao finita; modificao de valor){ comando a ser executado } Utilizao no cdigo: <?php for($i=0; $i<10; $i++){ echo contador: .$i; } ?>

6.4.3.2.

Lao de Repetio Para Cada (Foreach)

Consiste em uma estrutura, criada a partir da estrutura for, uma abstrao utilizada para percorrer listas de objetos ou lista de elementos, basicamente o lao ser repetido enquanto haja elemento na lista, e esse elemento ser extrado para uma varivel possibilitando a interao, a estrutura principal desse tipo de lao baseia-se em: foreach(coleoElemento as elemento){ comando a ser executado } Utilizao no cdigo: <?php $nomes = array('Thiago', 'Joo', 'Ricardo', 'Paula'); foreach($nomes as $nome){ echo nome: .$nome; } ?>

30

[Digite texto]

6.4.3.3.

Lao de Repetio Enquanto (While)

Consiste em uma repetio baseada em uma condio, sendo assim, enquanto essa condio for satisfeita, ou seja, enquanto ser verdadeira a condio o bloco de comando ser repetido, a estrutura principal desse lao basea-se em: while (condio){ Comando a ser executado } Utilizao no cdigo: <?php $n = 1; while($n<=10){ echo numero: .$n; $n++; } ?>

6.4.3.4.

Lao de Repetio Faa Enquanto (Do .. While)

Seu funcionamento e baseado no lao while, porem com uma individualidade, nesse lao no importa se a condio seja verdadeira pelo menos uma fez o comando dentro dele ser executado, pois a verificao da condio e feita aps a primeira execuo do comando, sua estrutura principal baseia-se em:

do{ comando a ser executado }while(condio);

Utilizao no cdigo: <?php $n=1; do{ echo numero.$n; $n++; }while($n<=10);

?>

31

[Digite texto]

7. Projeto Exemplo

32

[Digite texto]

7.1. Descrio
O projeto a seguir consiste em um cadastro de estados, onde encontraremos um cadastro simples com a finalidade e exemplificar a utilizao da ORIENTAO A OBJETO em PHP e conhecer os comandos principais atualmente utilizados, nele manipulamos a modelagem utilizando 5 camadas, que uma das formas de modelagem que possui as caractersticas da Modelagem MVC. Para o desenvolvimento utilizaremos a rotina de desenvolvimento mencionada anterior, sendo assim a sequncia de desenvolvimento ser a seguinte: DAO (conexo), DTO (modelagem da tabela Estado, DAO (implementao de mtodos do banco referente a tabela Estado), CTR (implementao dos controles de funes da tabela Estado), INT (implementao da interface de recepo dos dados da tabela Estado) e VIEW (implementao visual, criao de formulrio para a coleta de dados referente a tabela Estado).

7.2. Classe/Tabela Banco de Dados


A classe abaixo foi previamente criada no banco de dados como uma tabela, e ser utilizada no exemplo de implementao.

7.3. Implementao Camada DAO (Conexo)


Nessa camada ser implementada uma interface e uma classe PHP, a classe conexo a responsvel por localizar e se conectar ao banco de dados informado, essa classe criada somente uma vez no projeto, pois atravs dela que todas as outras classes iro tem acesso s tabelas do banco de dados, podendo assim modifica-los ou pesquisa-los, acompanhe o desenvolvimento abaixo, lembrando que as formas de comentrios no PHP so // para comentrios curtos e /* para comentrios longos. Implementao Interface Conexao:
<?php interface conexaoDAO { public function conectaDB(); public function closeDB($con); } ?>

Implementao Classe ConexaoIMP:

33

[Digite texto]

<?php require_once 'conexaoDAO.php'; class conexaoDAOIMP implements conexaoDAO { public function closeDB($con) { try { @mysql_close($con); } catch (Exception $exc) { echo $exc->getMessage(); } } public function conectaDB() { try { $host = "localhost"; $usuario = "root"; $senha = ""; $database = "projeto_treinamento"; return new mysqli($host, $usuario, $senha, $database); } catch (Exception $exc) { echo $exc->getMessage(); } } } ?>

7.4. Implementao Camada DTO (Modelagem)


A classe DTO, conhecida como classe de modelagem, tem a responsabilidade de receber os dados atravs de objetos criados a partir dela, sendo que esses dados podem ter sido resultado de uma consulta no banco de dados, formando assim uma coleo de objetos DTO, ou um simples objeto DTO que ser responsvel pelo armazenamento dos dados at que eles cheguem tabela referida no banco de dados. Nessa camada utilizaremos a metodologia conhecida como Encapsulamento, onde se torna o acesso as variveis da classe somente so possveis atravs dos seus mtodos pblicos e ser implementada uma classe PHP, acompanhe o desenvolvimento abaixo: Implementao classe EstadoDTO:
<?php class estadoDTO { private private private private private $id; $nome; $sigla; $status; $op;

public function getOp() { return $this->op; } public function setOp($op) { $this->op = $op; }

34

[Digite texto]

public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getNome() { return $this->nome; } public function setNome($nome) { $this->nome = $nome; } public function getSigla() { return $this->sigla; } public function setSigla($sigla) { $this->sigla = $sigla; } public function getStatus() { return $this->status; } public function setStatus($status) { $this->status = $status; } } ?>

7.5. Implementao Camada DAO (Mtodos Manipulao Dados)


A classe DAO, alm de abrigar a Conexo, tambm cuidar de todas as funes de acesso a tabelas do Banco de Dados, sendo assim todos os comandos de SQL dever ficar nessa camada, alm de todas as variveis que possurem alguma dependncia do Banco de Dados, e esses mtodos sero controlados por uma Interface e uma Classe do PHP agindo em conjunto, acompanhe o desenvolvimento abaixo: Implementao Interface EstadoDAO:
<?php require_once '../DTO/estadoDTO.php'; interface estadoDAO { public function modificaEstado(estadoDTO $estadoDTO); public function pesquisaEstado(estadoDTO $estadoDTO); } ?>

Implementao Classe EstadoDAOIMP:


<?php

35

[Digite texto]

require_once 'estadoDAO.php'; require_once 'conexaoDAOIMP.php'; require_once '../DTO/estadoDTO.php'; class estadoDAOIMP implements estadoDAO { public function modificaEstado(estadoDTO $estadoDTO) { try { $conexao = new conexaoDAOIMP(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($estadoDTO->getOp()) { case 1: $comando = "insert into estado(nome, sigla, status) values (?, ?, ?)"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('ssi', $nome, $sigla, $status); $nome = $estadoDTO->getNome(); $sigla = $estadoDTO->getSigla(); $status = $estadoDTO->getStatus(); $stmt->execute(); $stmt->close(); break; case 2: $comando = "update estado set nome=?, sigla=?, status=? where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('ssii', $nome, $sigla, $status, $id); $nome = $estadoDTO->getNome(); $sigla = $estadoDTO->getSigla(); $status = $estadoDTO->getStatus(); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->close(); break; case 3: $comando = "delete from estado where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $id); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->close(); break; } $conexao->closeDB($con); return true; } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisaEstado(estadoDTO $estadoDTO) { try { $conexao = new conexaoDAOIMP(); $dados[] = new estadoDTO(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($estadoDTO->getOp()) { case 1: $comando = "select * from estado where nome like ?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('s', $nome);

36

[Digite texto]

$nome = '%'.$estadoDTO->getNome().'%'; $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 2: $comando = "select * from estado where id=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $id); $id = $estadoDTO->getId(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 3: $comando = "select * from estado where status=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('i', $status); $status = $estadoDTO->getStatus(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; case 4: $comando = "select * from estado where sigla=?"; $stmt->prepare($comando) or die('Erro preparao'); $stmt->bind_param('s', $sigla); $sigla = $estadoDTO->getSigla(); $stmt->execute(); $stmt->bind_result($id, $nome, $sigla, $status); break; } $cont = 0; while ($stmt->fetch()) { $dado = new estadoDTO(); $dado->setId($id); $dado->setNome($nome); $dado->setSigla($sigla); $dado->setStatus($status); $dados[$cont] = $dado; $cont++; } $stmt->close(); $conexao->closeDB($con); return $dados; } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>

7.6. Implementao Camada CTR (Mtodos de Controle Dados)


A classe CTR, responsvel pelo controle de fluxo de dados no sistema, pois ela que ir definir para onde vo os dados dentro do sistema e para onde ser retornada a resposta para isso ser implementada uma classe do PHP, acompanhe o desenvolvimento abaixo: Implementao Classe EstadoCTR:
<?php

37

[Digite texto]

require_once '../DAO/estadoDAOIMP.php'; require_once '../DTO/estadoDTO.php'; class estadoCTR { public function modificaEstado(estadoDTO $estadoDTO) { try { $estadoDAO = new estadoDAOIMP(); return $estadoDAO->modificaEstado($estadoDTO); } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisarEstado(estadoDTO $estadoDTO){ try { $estadoDAO = new estadoDAOIMP(); return $estadoDAO->pesquisaEstado($estadoDTO); } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>

7.7. Implementao Camada INT (Interface de Dados)


A camada INT, tem a funo de receber os dados enviados pelo VIEW e fazer os devidos tratamentos de sua responsabilidade tambm obter as aes que o usurio deseja efetuar, nela ser feita a implementao de um arquivo do PHP, acompanhe o desenvolvimento abaixo: Implementao Classe EstadoINT:
<?php require_once '../CTR/estadoCTR.php'; require_once '../DTO/estadoDTO.php'; $estadoCTR = new estadoCTR(); $estadoDTO = new estadoDTO(); $estadoDTO->setNome($_POST['nome']); $estadoDTO->setSigla($_POST['sigla']); $estadoDTO->setStatus($_POST['status']); if(isset($_POST['cadastrar'])){ $estadoDTO->setOp(1); if($estadoCTR->modificaEstado($estadoDTO)){ echo '<script>alert("Cadastrado com Sucesso!"); window.location = "../VIEW/listarEstadoVIEW.php"; </script>'; }else{ echo '<script>alert("Erro ao Cadastrar!"); window.location = "../VIEW/listarEstadoVIEW.php"; </script>'; } } if(isset($_POST['alterar'])){ $estadoDTO->setOp(2); $estadoDTO->setId($_POST['id']);

38

[Digite texto]

if ($estadoCTR->modificaEstado($estadoDTO)) { echo("<script>alert('Alterado com sucesso!'); window.location = '../VIEW/listarEstadoVIEW.php'; </script>"); } else { echo("<script>alert('Erro ao Alterar!'); window.location ='../VIEW/listarEstadoVIEW.php'; </script>"); } } if(isset($_GET['excluir'])){ $estadoDTO->setOp(3); $estadoDTO->setId($_GET['excluir']); if ($estadoCTR->modificaEstado($estadoDTO)) { echo("<script>alert('Excludo com Sucesso!'); window.location = '../VIEW/listarEstadoVIEW.php'; </script>"); } else { echo("<script>alert('Erro ao Excluir!'); window.location ='../VIEW/listarEstadoVIEW.php';</script>"); } } ?>

7.8. Implementao Camada VIEW (Visual)


Essa a responsvel pela forma de exibio ao Usurio, ou seja basicamente aqui trabalhado todo o visual do site, porm, como o foco deste estudo no visual abaixo teremos uma implementao com um visual bem reduzido, nessa camada costuma-se utilizar outras linguagens alm da PHP e HTML utilizada at atualmente, a quais podem ser CSS, JAVASCRIPT, JAVASCRIPT (JQUERY), FLASH, dentre outras, nesse exemplo implementaremos dois arquivos do PHP, para que projeto fique com toda sua funcionalidade em amplo funcionamento, acompanhe o desenvolvimento abaixo: Implementao Classe EstadoVIEW:
<?php //alterar require_once '../CTR/estadoCTR.php'; require_once '../DTO/estadoDTO.php'; $estadoCTR = new estadoCTR(); $lista[] = new estadoDTO(); $estadoDTO = new estadoDTO(); if (isset($_GET['a'])) { $estadoDTO->setOp(2); $estadoDTO->setId($_GET['a']); $lista = $estadoCTR->pesquisarEstado($estadoDTO); } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Cadastro Estado</title> </head>

39

[Digite texto]

<body> <form id="cadEstado" name="cadEstado" action="../INT/estadoINT.php" method="POST"> <fieldset> <?php if ($lista[0]->getId() == "") { echo "<h2>Cadastrar</h2>"; } else { echo "<h2>Alterar</h2>"; } ?> <p>Nome:<br/><input type="text" name="nome" value="<?php echo $lista[0]->getNome(); ?>" id="nome" /></p> <p>Sigla:<br/><input type="text" name="sigla" id="sigla" value=" <?php echo $lista[0]->getSigla(); ?>"/></p> <p>Status: <br/> <select name="status" id="status"> <option value="0" <?php if ($lista[0]->getStatus() == 0) { echo 'selected="selected"'; } ?>>Ativo</option> <option value="1" <?php if ($lista[0]->getStatus() == 1) { echo 'selected="selected"'; } ?> >Inativo</option> </select> <?php if ($lista[0]->getId() == "") { echo'<p><input type="submit" name="cadastrar" id="cadastrar" value="Cadastar" /></p>'; } else { echo '<p><input type="submit" name="alterar" id="alterar" value="Alterar"/></p>'; echo'<input type="hidden" name="id" value=' . $lista[0]->getId() . '" id="id"/>'; } ?> </p> </fieldset> </form> </body> </html>

Implementao Classe listarEstadoVIEW:


<?php require_once '../CTR/estadoCTR.php'; require_once '../DTO/estadoDTO.php'; $estadoCTR = new estadoCTR(); $dados[] = new estadoDTO(); $estadoDTO = new estadoDTO(); $estadoDTO->setOp(1); $dados = $estadoCTR->pesquisarEstado($estadoDTO); ?> <!DOCTYPE html> <html>

40

[Digite texto]

<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Lista Estado</title> </head> <body> <center> <a href="estadoVIEW.php" >Cadastrar</a> <table id="listaEstado" name="listaEstado" border="1"> <tr> <th>ID:</th> <th>Nome:</th> <th>Sigla:</th> <th>Status:</th> <th colspan="2">Editar:</th> </tr> <?php for ($i = 0; $i < sizeof($dados); $i++) { if ($dados[$i]->getId() != "") { if ($dados[$i]->getStatus() == 0) { $status = "ATIVO"; } else if ($dados[$i]->getStatus() == 1) { $status = "INATIVO"; } else { $status = "INDEFINIDO"; } echo '<tr> <td>' . $dados[$i]->getId() . '</td> <td>' . $dados[$i]->getNome() . '</td> <td>' . $dados[$i]->getSigla() . '</td> <td>' . $status . '</td> <td><a href="estadoVIEW.php?a=' '">Alterar</a></td> <td><a href="../INT/estadoINT.php?excluir=. $dados[$i]->getId() . " >Excluir</a></td> </tr>'; } } ?> </table> <br/> <br/> </center> </body> </html>

$dados[$i]->getId()

7.9. Sesses e Controle de Login


Sesses so tipos de variveis utilizada para controles de usurio no browsers (navegadores), essas variveis so criadas no sistema utilizado pelo cliente, sendo elas uma das formas mais seguras de se armazenar dados. O controle de login, baseia-se em uma implementao na qual buscamos informao do banco de dados e a partir desses dados torna-se possvel o controle de acesso atravs de tipos e senhas, recomenda-se que esses tipos sejam armazenados atravs de nmeros e as senhas sejam armazenadas utilizando algum tipo de criptografia, mais a frente teremos a implementao desse controle que utilizar como base a tabela modelada abaixo, e seguir a rotina de desenvolvimento, nesse caso ser continuao:

41

[Digite texto]

7.10. Camada DTO


Criao da classe do PHP usuarioDTO, a qual tem a responsabilidade de implementar todos os dados da tabela USUARIO.
<?php class usuarioDTO { private private private private private private $id; $login; $senha; $tipo; $status; $op;

public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getLogin() { return $this->login; } public function setLogin($login) { $this->login = $login; } public function getSenha() { return $this->senha; } public function setSenha($senha) { $this->senha = $senha; } public function getTipo() { return $this->tipo; } public function setTipo($tipo) { $this->tipo = $tipo; } public function getStatus() { return $this->status; } public function setStatus($status) { $this->status = $status; }

42

[Digite texto]

public function getOp() { return $this->op; } public function setOp($op) { $this->op = $op; } } ?>

7.11. Camada DAO


Criao da Interface do PHP, para o desenvolvimento dos mtodos de acesso tabela Usuario, sendo essa interface a usuarioDAO.
<?php require_once '../DTO/usuarioDTO.php'; interface usuarioDAO { public function modificarUsuario(usuarioDTO $usuarioDTO); public function pesquisarUsuario(usuarioDTO $usuarioDTO); } ?>

Criao da Classe do PHP, para o desenvolvimento dos mtodos de acesso tabela Usuario, sendo essa Classe baseada na interface a usuarioDAO e denominada como usuarioDAOIMP.
<?php require_once '../DTO/usuarioDTO.php'; require_once 'conexaoIMP.php'; require_once 'usuarioDAO.php'; class usuarioDAOIMP implements usuarioDAO { public function modificarUsuario(usuarioDTO $usuarioDTO) { try { $conexao = new conexaoIMP(); $con = $conexao->conectaDB(); $comando = ""; $stmt = $con->stmt_init(); switch ($usuarioDTO->getOp()) { case 1: //gravar $comando = "INSERT INTO usuarios(login, senha, tipo, status) VALUES (?, ?, ?, ?);"; $stmt->prepare($comando) or die("ERRO DO INSERT DAO "); $stmt->bind_param('ssii', $login, $senha, $tipo, $status); $login = $usuarioDTO->getLogin(); $senha = $usuarioDTO->getSenha(); $tipo = $usuarioDTO->getTipo(); $status = $usuarioDTO->getStatus(); $stmt->execute(); $stmt->close(); break; case 2 : //alterar $comando = "UPDATE usuarios SET login=?, senha=?, tipo=?, status=? WHERE id=?;";

43

[Digite texto]

$stmt->prepare($comando) or die("ERRO DO UPDATE DAO "); $stmt->bind_param('ssiii', $login, $senha, $tipo, $status, $id); $login = $usuarioDTO->getLogin(); $senha = $usuarioDTO->getSenha(); $tipo = $usuarioDTO->getTipo(); $status = $usuarioDTO->getStatus(); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->close(); break; case 3 : //excluir $comando = "DELETE FROM usuarios WHERE id=?"; $stmt->prepare($comando) or die("ERRO DO UPDATE DAO "); $stmt->bind_param('i', $id); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->close(); break; } $conexao->closeDB($con); return true; } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisarUsuario(usuarioDTO $usuarioDTO) { try { $conexao = new conexaoIMP(); $dados[] = new usuarioDTO(); $con = $conexao->conectaDB(); $stmt = $con->stmt_init(); $comando = ""; switch ($usuarioDTO->getOp()) { case 1: //todos $comando = "SELECT * FROM usuarios;"; $stmt->prepare($comando) or die("ERRO SELECT"); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 2: //todos ativos $comando = "SELECT * FROM usuarios WHERE status=0"; $stmt->prepare($comando) or die("erro select"); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 3: //id $comando = "SELECT * FROM usuarios WHERE id=?"; $stmt->prepare($comando) or die("erro select"); $stmt->bind_param('i', $id); $id = $usuarioDTO->getId(); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; case 4: //login $comando = "SELECT * FROM usuarios WHERE login=?;"; $stmt->prepare($comando) or die("erro select"); $stmt->bind_param('s', $login); $login=$usuarioDTO->getLogin(); $stmt->execute(); $stmt->bind_result($id, $login, $senha, $tipo, $status); break; }

44

[Digite texto]

$cont = 0; while ($stmt->fetch()) { $dado = new usuarioDTO(); $dado->setId($id); $dado->setLogin($login); $dado->setSenha($senha); $dado->setTipo($tipo); $dado->setStatus($status); $dados[$cont] = $dado; $cont++; } $conexao->closeDB($con); return $dados; } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>

7.12. Camada CTR


Criao da classe do PHP usuarioCTR, onde sero implementados os mtodos de controle de variveis referentes aos dados dos usurios, a seguir a implementao:
<?php require_once '../DTO/usuarioDTO.php'; require_once '../DAO/usuarioDAOIMP.php'; class usuarioCTR { public function modificarUsuario(usuarioDTO $usuarioDTO) { try { $usuarioDAO = new usuarioDAOIMP(); return $usuarioDAO->modificarUsuario($usuarioDTO); } catch (Exception $exc) { echo $exc->getMessage(); return false; } } public function pesquisarUsuario(usuarioDTO $usuarioDTO) { try { $usuarioDAO = new usuarioDAOIMP(); return $usuarioDAO->pesquisarUsuario($usuarioDTO); } catch (Exception $exc) { echo $exc->getMessage(); return null; } } } ?>

7.13. Camada INT

45

[Digite texto]

Na implementao da camada INT, j teremos um novo assunto sendo que nessa camada j iniciaremos o trabalho com Sesses, pois em um caso de login essa camada ser responsvel por localizar os dados e envia-los para a Sesso, alm de no caso de um usurio sair do sistema, ou efetuar o logoff, essa camada ser responsvel por limpar as sesses. Sesses tem muitas utilidades, podendo at mesmo controlar o tempo de inatividade, por isso um assunto muito bom a ser explorado nas linguagens web, no entanto aqui, iremos implementas algumas formas simples de envio de dados sesso e o restauro de dados da mesma. Abaixo teremos um arquivo do PHP, o qual ser responsvel pela Interface da tabela usurio:
<?php session_start(); require_once '../DTO/usuarioDTO.php'; require_once '../CTR/usuarioCTR.php'; $usuarioCTR = new usuarioCTR(); $usuarioDTO = new usuarioDTO(); $usuarioDTO->setLogin($_POST['login']); $usuarioDTO->setSenha(md5($_POST['senha'])); $usuarioDTO->setTipo($_POST['tipo']); $usuarioDTO->setStatus($_POST['status']); if (isset($_POST['cadastrar'])) { $usuarioDTO->setOp(1); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario enviado com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao enviar Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } } if (isset($_POST['alterar'])) { $usuarioDTO->setId($_POST['id']); $usuarioDTO->setOp(2); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario enviado com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao enviar Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } } if (isset($_GET['e'])) { $usuarioDTO->setId($_GET['e']); $usuarioDTO->setOp(3); if ($usuarioCTR->modificarUsuario($usuarioDTO)) { echo "<script>alert('Usuario Excluido com sucesso!'); window.location = '../VIEW/listaUsuarioVIEW.php';</script>"; } else { echo "<script>alert('Erro ao Excluir Usuario!'); window.location = '../VIEW/listaUsuarioVIEW.php'; </script>"; } } if (isset($_POST['Logar'])) { $usuarioDTO->setOp(4);

46

[Digite texto]

$dados[] = new usuarioDTO(); $dados = $usuarioCTR->pesquisarUsuario($usuarioDTO); $rs = false; for ($i = 0; $i < sizeof($dados); $i++) { if ($dados[$i]->getSenha() == $usuarioDTO->getSenha()) { $_SESSION['id'] = $dados[$i]->getId(); $_SESSION['login'] = $dados[$i]->getLogin(); $_SESSION['tipo'] = $dados[$i]->getTipo(); $rs = true; break; } } if ($rs) { echo "<script>window.location = '../VIEW/principal.php'; </script>"; } else { echo "<script>window.location = '../admin/index.php?n=1'; </script>"; } } if (isset($_GET['s'])) { $_SESSION['id'] = ""; $_SESSION['login'] = ""; $_SESSION['tipo'] = ""; session_unset(); session_destroy(); echo("<script>window.location = '../admin/index.php?n=2'; </script>"); } ?>

7.14. Camada VIEW


Na camada VIEW, ser implementado o arquivo do PHP index.php da viso administradora, sendo que esse estar dentro da pasta admin, e ser responsvel pelo login do sistema, alm de implementar o arquivo do PHP principal.php que ser implementado dentro da VIEW, e ser para onde o usurio verificado ser redirecionado caso sua senha e usurio esteja correta. Implementao index.php
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Login Administrador</title> </head> <body> <!-<script type="text/javascript"> window.location = "../VIEW/principal.php"; </script> --> <center> <h3> <?php $x = $_GET['n']; if ($x == 2) { echo 'SISTEMA FINALIZADO COM SUCESSO'; } else if ($x == 1) { echo 'USURIO OU SENHA INVLIDA... VERIFIQUE...'; }

47

[Digite texto]

?> </h3> <form id="cadLogin" name="cadLogin" action="../INT/usuarioINT.php" method="POST"> <fieldset> <p>Login: <input type="text" name="login" id="login" value=""/></p> <p>Senha: <input type="password" name="senha" id="senha" value=""/></p> <p><input type="submit" name="Logar" id="Logar" value="Logar" /></p> </fieldset> </form> </center> </body> </html>

Implementao principal.php
<?php session_start(); if ($_SESSION['id'] != "") { ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Pgina Administradora</title> </head> <body> <a href="listaBigclub_dicasVIEW.php">Big Club</a><br/> <a href="listaCidadeVIEW.php">Cidades</a><br/> <a href="listaContato.php">Contatos</a><br/> <a href="listaCursosVIEW.php">Cursos</a><br/> <a href="empresaVIEW.php">Dados Empresa</a><br/> <a href="listaMateriaVIEW.php">Materias</a><br/> <a href="listaPainel.php">Painel</a><br/> <a href="listaPainelItem.php">Painel Item</a><br/> <a href="listaUsuarioVIEW.php">Usuarios</a><br/> <a href="listaUnidadesVIEW.php">Unidades</a><br/> <a href="../INT/usuarioINT.php?s=ok">Logout...</a> <?php if ($_SESSION['tipo'] == 0) { $nivel = 'ADMINISTRADOR'; } else if ($_SESSION['tipo'] == 1) { $nivel = 'FUNCIONRIO'; } else { $nivel = 'INDEFINIDO'; } echo 'Bem Vindo: ' . $_SESSION['login'] . ' - Cdigo Verificao: ' . $_SESSION['id'] . ' - Nivel: ' . $nivel ?> </body> </html> <?php } ?>

48

Das könnte Ihnen auch gefallen