Tecnologias para Internet - 2016.2 - Aula 12
-
Upload
thyago-maia -
Category
Education
-
view
49 -
download
0
Transcript of Tecnologias para Internet - 2016.2 - Aula 12
Tecnologias para Internet
Prof.º Thyago Maia
Paradigma de Programação Orientado a Objetos
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
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
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;
}
?>
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’;
?>
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;
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>’;
}}
?>
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();?>
PHP OO – Construtores e Destrutores
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
Construtor
Sintaxe:
12
function __construct($p_1, $p_2, ..., $p_n)
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
Destrutor
Sintaxe:
14
function __destruct()
PHP OO – Herança
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
Herança
Usamos a palavra reservada extends na assinatura de uma classe para estabelecer uma hierarquia;
Sintaxe:
17
<?php
class Filha extends Pai{
// ...
PHP OO – Polimorfismo
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
PHP OO – Classes Abstratas
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
Classes Abstratas
Sintaxe:
22
<?php
abstract class Conta{
// ...
PHP OO – Classes Finais
Classes Finais
Classes que não podem ter herdeiros (não podem ser superclasses);
Sintaxe - Exemplo:
24
<?php
final class ContaPoupanca extends Conta {
// ...
PHP OO – Métodos Abstratos
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
Métodos Abstratos Sintaxe - Exemplo:
27
<?php
// ...
abstract function transferir($conta);
// ...
PHP OO – Métodos Finais
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
Métodos Finais Sintaxe - Exemplo:
30
<?php
// ...
final function transferir($conta){
// ...
PHP OO – Encapsulamento
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
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
Encapsulamento
Representação UML para as visibilidades de atributos e métodos em diagramas de classe:
(+) public; (-) private; (#) protected;
34
PHP OO – Armazenamento de Dados em Classes
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
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 ”;}
?>
Armazenamento em Classes
Sintaxe – Constantes – Exemplo:
38
<?phpclass Biblioteca{
const Nome = “GTK ”;}
echo Biblioteca::Nome . ‘<br>’;?>
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;}
?>
Armazenamento em Classes Sintaxe – Atributos Estáticos – Exemplo:
40
<?phpclass Aplicacao{
static $Quantidade;
function __construct(){
self::$Quantidade++;}
}
new Aplicacao();
echo Aplicacao::$Quantidade . ‘<br>’;?>
PHP OO – Métodos Estáticos
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
Métodos Estáticos Sintaxe – Métodos Estáticos – Exemplo:
43
<?phpclass Aplicacao{
static function Sobre() {echo “Teste estático”;
}}
Aplicacao::Sobre();?>
PHP OO – Interfaces
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
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
Interface
Sintaxe – Exemplo:
47
<?php
interface IMensagem{
function mensagem();}
class Aplicacao implements IMensagem{
function mensagem() {echo ‘Exemplo interface’;
}}
?>
PDO – PHP Data Objects
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
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;
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');
PDO – Exemplos
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
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;
?>
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;?>
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;
?>
Exercício
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
Exercício
• Etapa 2 – Preparação do Domínio
Crie uma pasta em htdocs chamada sistema;
59
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
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
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
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
Exercício
Exercício
• Etapa 1 – Preparação do Banco de Dados no phpmyadmin
Utilizaremos a mesma base criada no exercício anterior;
65
Exercício
• Etapa 2 – Preparação do Domínio
Utilizaremos a pasta sistema criada anteriormente;
66
Exercício
• Etapa 3 – Criação de um formulário HTML
Utilizaremos o mesmo formulário do exercício anterior;
67
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
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
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