tecnologias para internet - 2016.2 - aula 12

70
Tecnologias para Internet Prof.º Thyago Maia

Upload: thyago-maia

Post on 09-Jan-2017

49 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Tecnologias para Internet - 2016.2 - Aula 12

Tecnologias para Internet

Prof.º Thyago Maia

Page 2: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação Orientado a Objetos

Page 3: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO

O paradigma OO propõe que a solução de qualquer problema pode ser obtida seguindo estas etapas:

Procurar e implementar classes existentes no problema; Determinar as características e responsabilidades de cada

classe; Instanciar objetos de cada classe; Estabelecer como ocorrerá a interação entre os objetos;

3

Page 4: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO

Classe Estrutura de dados que possui atributos (variáveis de

classe) e métodos (funções PHP); Descreve as propriedades e comportamentos de objetos;

Modelo ou template para objetos;

Objeto Originada com base em uma classe; A partir de um objeto, temos “uma cópia” dos atributos e

métodos de uma classe; Interagem no sistema e armazenam dados;

4

Page 5: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO Exemplo 1 – Implementação de uma classe em PHP:

5

// Arquivo Produto.class.php

<?php

class Produto{

// Classe com 4 atributospublic $codigo;public $descricao;public $preco;public $quantidade;

}

?>

Page 6: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO Exemplo 1 – Instanciando um objeto da classe

Produto:

6

// Arquivo testeObjeto.php

<?php// Incluindo a classe criada anteriormenteinclude_once ‘classes/Produto.class.php’;

// Criando um objeto$produto = new Produto;

// Atribuindo valores aos atributos$produto->codigo = 4001;$produto->descricao = ‘CD – AC/DC’;

?>

Page 7: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO Exemplo 2 – A classe Produto com atributos e um

método:

7

// Arquivo Produto.class.php<?php

class Produto{

// Classe com 4 atributospublic $codigo;public $descricao;public $preco;public $quantidade;

Page 8: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO Exemplo 2 – A classe Produto com atributos e um

método:

8

// Arquivo Produto.class.php

function imprimeEtiqueta(){

echo ‘Código: ’ . $this->codigo . ‘<br>’;

echo ‘Descrição: ’ . $this->descricao . ‘<br>’;

}}

?>

Page 9: Tecnologias para Internet - 2016.2 - Aula 12

Paradigma de Programação OO Exemplo 2 – Instanciando um objeto da classe

Produto e executando um método do mesmo:

9

// Arquivo testeObjeto.php

<?php// Incluindo a classe criada anteriormenteinclude_once ‘classes/Produto.class.php’;// Criando um objeto$produto = new Produto;// Atribuindo valores aos atributos$produto->codigo = 4001;$produto->descricao = ‘CD – AC/DC’;

$produto->imprimeEtiqueta();?>

Page 10: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Construtores e Destrutores

Page 11: Tecnologias para Internet - 2016.2 - Aula 12

Construtor

Método especial utilizado para definir o comportamento inicial de um objeto;

Muito utilizado para inicializar atributos (variáveis de classe);

Executado automaticamente no momento da instância de um objeto (uso da palavra reservada new);

11

Page 12: Tecnologias para Internet - 2016.2 - Aula 12

Construtor

Sintaxe:

12

function __construct($p_1, $p_2, ..., $p_n)

Page 13: Tecnologias para Internet - 2016.2 - Aula 12

Destrutor

Método especial a ser executado automaticamente quando o objeto é desalocado da memória ou quando o programa é finalizado;

Muito utilizado para finalizar conexões, apagar arquivos temporários, etc.;

13

Page 14: Tecnologias para Internet - 2016.2 - Aula 12

Destrutor

Sintaxe:

14

function __destruct()

Page 15: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Herança

Page 16: Tecnologias para Internet - 2016.2 - Aula 12

Herança

Permite reutilizar atributos e métodos já definidos em uma outra classe;

Elimina eventuais duplicações ou reescritas de código;

Classes-filha (subclasses) herdam implementações da classe-pai (superclasse) de acordo com uma hierarquia;

16

Page 17: Tecnologias para Internet - 2016.2 - Aula 12

Herança

Usamos a palavra reservada extends na assinatura de uma classe para estabelecer uma hierarquia;

Sintaxe:

17

<?php

class Filha extends Pai{

// ...

Page 18: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Polimorfismo

Page 19: Tecnologias para Internet - 2016.2 - Aula 12

Polimorfismo

Permite que subclasses possuam métodos iguais (com a mesma assinatura) de uma superclasse, mas com comportamentos diferentes;

As implementações de tais métodos são redefinidas nas classes-filhas;

Classes-filha (subclasses) herdam implementações da classe-pai (superclasse) de acordo com uma hierarquia;

19

Page 20: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Classes Abstratas

Page 21: Tecnologias para Internet - 2016.2 - Aula 12

Classes Abstratas

Classes estruturais que servem de base para outras classes;

Não podem ser instanciadas (terem objetos) Apenas as subclasses poderão ser instanciadas;

Usamos a palavra reservada abstract na assinatura de uma classe para torná-la abstrata;

21

Page 22: Tecnologias para Internet - 2016.2 - Aula 12

Classes Abstratas

Sintaxe:

22

<?php

abstract class Conta{

// ...

Page 23: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Classes Finais

Page 24: Tecnologias para Internet - 2016.2 - Aula 12

Classes Finais

Classes que não podem ter herdeiros (não podem ser superclasses);

Sintaxe - Exemplo:

24

<?php

final class ContaPoupanca extends Conta {

// ...

Page 25: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Métodos Abstratos

Page 26: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Abstratos

Métodos que possui apenas assinaturas, implementados em classes abstratas; Não possuem implementação!

Faz com que as classes-filha sejam obrigadas a definir as implementações dos métodos abstratos; Impõem o polimorfismo às subclasses!

Usamos a palavra reservada abstract na assinatura de um método para torná-la abstrata;

26

Page 27: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Abstratos Sintaxe - Exemplo:

27

<?php

// ...

abstract function transferir($conta);

// ...

Page 28: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Métodos Finais

Page 29: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Finais

Métodos que não podem ser sobrescritos; Proíbem que subclasses usem polimorfismo!

Usamos a palavra reservada final na assinatura de um método para impedir que seja sobrescrita;

29

Page 30: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Finais Sintaxe - Exemplo:

30

<?php

// ...

final function transferir($conta){

// ...

Page 31: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Encapsulamento

Page 32: Tecnologias para Internet - 2016.2 - Aula 12

Encapsulamento

Mecanismo que provê proteção de acesso aos atributos e métodos de um objeto;

A depender de um projeto de uma classe, certos atributos e métodos devem ser tratados exclusivamente: Pela classe que os possui; Pela superclasse e subclasses em uma hierarquia; Por qualquer classe ou script;

32

Page 33: Tecnologias para Internet - 2016.2 - Aula 12

Encapsulamento

Para definir a visibilidade dos membros de um objeto, usamos as palavras reservadas public, private ou protected na assinatura de atributos e métodos; public – Podem ser acessados livremente; private – Podem ser acessados dentro da própria

classe em que foram declarados; protected – Podem ser acessados dentro da

própria classe em que foram declarados e a partir das classes descendentes;

33

Page 34: Tecnologias para Internet - 2016.2 - Aula 12

Encapsulamento

Representação UML para as visibilidades de atributos e métodos em diagramas de classe:

(+) public; (-) private; (#) protected;

34

Page 35: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Armazenamento de Dados em Classes

Page 36: Tecnologias para Internet - 2016.2 - Aula 12

Armazenamento em Classes

Os seguintes membros podem ser utilizados para armazenamento de dados em classes: Constantes; Atributos Estáticos;

Podem ser acessados diretamente a partir do nome da classe, sem a necessidade de um objeto para tal;

36

Page 37: Tecnologias para Internet - 2016.2 - Aula 12

Armazenamento em Classes

Sintaxe – Constantes – Exemplo:

Para acessar uma constante de classe... ... a partir da própria classe: self::Nome; ... a partir de uma subclasse: parent::Nome; ... Externamente, fora da hierarquia: Biblioteca::Nome;

37

<?phpclass Biblioteca{

const Nome = “GTK ”;}

?>

Page 38: Tecnologias para Internet - 2016.2 - Aula 12

Armazenamento em Classes

Sintaxe – Constantes – Exemplo:

38

<?phpclass Biblioteca{

const Nome = “GTK ”;}

echo Biblioteca::Nome . ‘<br>’;?>

Page 39: Tecnologias para Internet - 2016.2 - Aula 12

Armazenamento em Classes Sintaxe – Atributos Estáticos – Exemplo:

Para acessar um atributo de classe estático... ... a partir da própria classe: self::$Quantidade; ... a partir de uma subclasse: parent::$Quantidade; ... Externamente, fora da hierarquia: Aplicacao::

$Quantidade;39

<?phpclass Aplicacao{

static $Quantidade;}

?>

Page 40: Tecnologias para Internet - 2016.2 - Aula 12

Armazenamento em Classes Sintaxe – Atributos Estáticos – Exemplo:

40

<?phpclass Aplicacao{

static $Quantidade;

function __construct(){

self::$Quantidade++;}

}

new Aplicacao();

echo Aplicacao::$Quantidade . ‘<br>’;?>

Page 41: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Métodos Estáticos

Page 42: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Estáticos

Podem ser invocados diretamente pelo nome da classe, sem a necessidade de instanciar um objeto; Só podem manipular atributos estáticos; Só podem chamar outros métodos estáticos;

Usamos a palavra reservada static na assinatura de um método de classe;

Usamos a sintaxe NomeDaClasse::NomeDoMetodo() para executar um método estático;

42

Page 43: Tecnologias para Internet - 2016.2 - Aula 12

Métodos Estáticos Sintaxe – Métodos Estáticos – Exemplo:

43

<?phpclass Aplicacao{

static function Sobre() {echo “Teste estático”;

}}

Aplicacao::Sobre();?>

Page 44: Tecnologias para Internet - 2016.2 - Aula 12

PHP OO – Interfaces

Page 45: Tecnologias para Internet - 2016.2 - Aula 12

Interface

Classe que define um conjunto de métodos que determinadas classes de um sistema deverão implementar incondicionalmente;

Seus métodos possuem apenas assinaturas; Não possuem implementação!

Tal classe não possui atributos;

45

Page 46: Tecnologias para Internet - 2016.2 - Aula 12

Interface

Usamos a palavra reservada interface na assinatura da classe que funcionará como uma interface;

Usamos a palavra reservada implements na assinatura da classe que implementará uma interface;

Uma classe pode implementar mais de uma interface;

46

Page 47: Tecnologias para Internet - 2016.2 - Aula 12

Interface

Sintaxe – Exemplo:

47

<?php

interface IMensagem{

function mensagem();}

class Aplicacao implements IMensagem{

function mensagem() {echo ‘Exemplo interface’;

}}

?>

Page 48: Tecnologias para Internet - 2016.2 - Aula 12

PDO – PHP Data Objects

Page 49: Tecnologias para Internet - 2016.2 - Aula 12

PDO – PHP Data Objects

Unifica o acesso às diferentes extensões de bancos de dados presentes em PHP;

Provê uma API limpa e consistente, unificando a

maioria das características presentes nas extensões de acesso a banco de dados

Unifica a chamada de métodos, graças à orientação a objetos presentes no PHP5;

49

Page 50: Tecnologias para Internet - 2016.2 - Aula 12

PDO – PHP Data Objects

• Sequência de passos:

1. A aplicação estabelece uma conexão com o SGBD; 2. A aplicação seleciona uma base de dados a ser utilizada durante a conexão; 3. A aplicação executa uma consulta específica (seleção, inserção, remoção...); 4. A aplicação fecha a conexão corrente com o SGBD;

Page 51: Tecnologias para Internet - 2016.2 - Aula 12

PDO – PHP Data Objects

PDO – Conexão com bancos de dados:

51

Banco String de ConexãoSQLite new PDO(‘sqlite: teste.db’);FireBird new PDO(“firebird:dbname=C:\\base.GDB”, “SYSDBA”, “masterkey”);MySQL new PDO('mysql:host=localhost;dbname=base', 'login', 'senha');Postgres new PDO('pgsql:dbname=example; user=user;

password=senha;host=localhost');

Page 52: Tecnologias para Internet - 2016.2 - Aula 12

PDO – Exemplos

Page 53: Tecnologias para Internet - 2016.2 - Aula 12

PDO – Exemplos

No phpmyadmin, configure o banco de dados da atividade:

Database: livros Tabela: famosos

Campos: codigo (int, auto increment, chave primária) e nome (varchar[100]);

53

Page 54: Tecnologias para Internet - 2016.2 - Aula 12

PDO – Exemplos

Exemplo 1: Inserindo dados via PDO

54

<?php

$conn = new PDO('mysql:host=localhost;dbname=livros', 'Root', 'Unipe');

$conn->exec("INSERT INTO famosos (nome) VALUES ('Thyago Maia')");

$conn = null;

?>

Page 55: Tecnologias para Internet - 2016.2 - Aula 12

PDO – Exemplos Exemplo 2: Listagem via PDO

55

<?php$conn = new

PDO('mysql:host=localhost;dbname=livros', 'Root', 'Unipe');

$result = $conn->query("SELECT codigo, nome from famosos");

if($result)foreach($result as $row)

echo $row[‘codigo'] . '-' . $row['nome'] . '<br>';

$conn = null;?>

Page 56: Tecnologias para Internet - 2016.2 - Aula 12

PDO – Exemplos

Exemplo 3: Excluindo dados via PDO

56

<?php

$conn = new PDO('mysql:host=localhost;dbname=livros', 'Root', 'Unipe');

$conn->exec("DELETE FROM famosos WHERE codigo = 1");

$conn = null;

?>

Page 57: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

Page 58: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 1 – Preparação do Banco de Dados no phpmyadmin

Database: sistema Tabela: cadastro

Campos: codigo (int, auto increment, chave primária), nome (varchar[100]), telefone (varchar[100]) e email (varchar[100]);

58

Page 59: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 2 – Preparação do Domínio

Crie uma pasta em htdocs chamada sistema;

59

Page 60: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 3 – Criação de um formulário HTML

Crie um formulário HTML que permita ao usuário digitar seu nome, telefone e e-mail; Método de envio: POST; Os dados deverão ser submetidos para o script

“cadastro.php”; Salve o documento HTML na pasta sistema com o

nome index.html;

60

Page 61: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 4 – Criação do script cadastro.php na pasta sistema

O script deverá inicialmente receber os dados submetidos na etapa anterior;

Em seguida, via PDO, o script deverá inserir os dados no banco de dados;

O script deverá redirecionar o usuário para o script lista_usuarios.php;

61

Page 62: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 5 – Criação do script lista_usuarios.php na pasta sistema

– O script deverá exibir todos os cadastros efetuados até o momento, além de disponibilizar um link que permita ao usuário efetuar um novo cadastro;

62

Page 63: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 6 – Testar a aplicação

Abra o navegador de sua preferência e acesse: http://localhost/sistema ou http://127.0.0.1/sistema

OBS.: Verifique se o servidor Apache do Xampp está ativo;

63

Page 64: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

Page 65: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 1 – Preparação do Banco de Dados no phpmyadmin

Utilizaremos a mesma base criada no exercício anterior;

65

Page 66: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 2 – Preparação do Domínio

Utilizaremos a pasta sistema criada anteriormente;

66

Page 67: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 3 – Criação de um formulário HTML

Utilizaremos o mesmo formulário do exercício anterior;

67

Page 68: Tecnologias para Internet - 2016.2 - Aula 12

Exercício• Etapa 4 – Criação da classe Cadastro.class.php

na pasta sistema

68

Cadastro-nome: string-telefone: string-email: string+setNome(nome: string) : void+setTelefone(telefone: string) : void+setEmail(email: string) : void+getNome() : string+getTelefone() : string+getEmail() : string+inserir() : void+exibir() :void

Page 69: Tecnologias para Internet - 2016.2 - Aula 12

Exercício• Etapa 5 – Atualização do script cadastro.php

da pasta sistema O script deverá:

Receber os dados submetidos na etapa anterior; Instanciar um objeto da classe Cadastro; Atribuir os dados recebidos para o objeto instanciado

(via construtor de classe); Executar o método inserir a partir do objeto

instanciado; Executar o método exibir a partir do objeto

instanciado; Disponibilizar um link que permita ao usuário efetuar

um novo cadastro; 69

Page 70: Tecnologias para Internet - 2016.2 - Aula 12

Exercício

• Etapa 6 – Testar a aplicação

Abra o navegador de sua preferência e acesse: http://localhost/sistema ou http://127.0.0.1/sistema

OBS.: Verifique se o servidor Apache do Xampp está ativo!

70