3. Classes Finais
Classes que não podem ter herdeiros (não podem
ser superclasses);
Sintaxe - Exemplo:
3
<?php
final class ContaPoupanca extends Conta
{
// ...
5. 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;
5
8. 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;
8
9. 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;
9
10. Encapsulamento
Representação UML para as visibilidades de
atributos e métodos em diagramas de classe:
(+) public;
(-) private;
(#) protected;
10
14. 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;
14
15. 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;
15
<?php
class Biblioteca
{
const Nome = “GTK ”;
}
?>
16. Armazenamento em Classes
Sintaxe – Constantes – Exemplo:
16
<?php
class Biblioteca
{
const Nome = “GTK ”;
public function imprimeConstante() {
echo self::Nome . "<br>";
}
}
echo Biblioteca::Nome . ‘<br>’;
?>
17. Armazenamento em Classes
Sintaxe – Atributos Estáticos – Exemplo:
Para acessar um atributo de classe estático...
... a partir da própria classe: self::$Quantidade ou
static::$Quantidade;
... a partir de uma subclasse: parent::$Quantidade;
... Externamente, fora da hierarquia:
Aplicacao::$Quantidade; 17
<?php
class Aplicacao
{
public static $Quantidade;
}
?>
18. Armazenamento em Classes
Sintaxe – Atributos Estáticos – Exemplo:
18
<?php
class Aplicacao
{
public static $Quantidade;
function __construct()
{
static::$Quantidade++;
}
}
$app1 = new Aplicacao();
echo Aplicacao::$Quantidade . '<br>';
$app2 = new Aplicacao();
echo Aplicacao::$Quantidade . '<br>';
?>
20. Métodos Estáticos
Podem ser invocados diretamente pelo nome da
classe, sem a necessidade de instanciar um objeto;
Também permitem que outras classes possam manipular
atributos estáticos privados de uma classe fornecedora;
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;
20
21. Métodos Estáticos
21
<?php
class Aplicacao {
private static $Quantidade;
public function __construct() {
static::$Quantidade++;
}
public static function imprimeContador() {
return static::$Quantidade;
}
}
$app1 = new Aplicacao();
echo Aplicacao::imprimeContador() . '<br>';
$app2 = new Aplicacao();
echo Aplicacao::imprimeContador() . '<br>';
?>
23. Interfaces
“Obriga” a um determinado grupo de classes a ter
métodos em comum;
Funciona como uma espécie de contrato que, quando
assumido por uma classe, deve ser implementado;
Apenas assinaturas de métodos fazem parte do
corpo de interfaces;
As classes que seguem este “contrato” deverão
implementar o comportamento dos métodos;
Tal estrutura não possui atributos;
23
24. 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;
24
30. Exercício
• Etapa 3 – Criação de um formulário HTML
Crie um formulário HTML que permita ao usuário
digitar o nome, marca e modelo de um veículo,
além de informar o tipo de veículo;
Método de envio: POST;
Os dados deverão ser submetidos para o script
“exibir_veiculo.php”;
Salve o documento HTML na pasta contrato com o
nome index.html;
30
31. Exercício
• Etapa 4 – Criação do script exibir_veiculo.php
na pasta contrato
O script deverá inicialmente receber os dados submetidos
pelo formulário HTML;
Em seguida, o script deverá criar um objeto da classe que
representa o veículo selecionado;
Com o objeto criado, os dados enviados a partir do
formulário deverão ser submetidos para o mesmo;
O script deverá exibir as observações do veículo;
31
33. 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 a partir do PHP 5;
33
34. 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;
35. PDO – PHP Data Objects
PDO – Conexão com bancos de dados:
35
Banco String de Conexão
SQLite 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');
37. PDO – Exemplos
No phpmyadmin, configure o banco de dados da
atividade:
Database: livros
Tabela: famosos
Campos: id (int, auto increment, chave primária) e
nome (varchar[100]);
37
38. PDO – Exemplos
Exemplo 1: Inserindo dados via PDO
38
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', 'Root',
'Unipe');
$conn->exec("INSERT INTO famosos (nome) VALUES
('Thyago Maia')");
$conn = null;
?>
39. PDO – Exemplos
Exemplo 2: Listagem via PDO
39
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', 'Root',
'Unipe');
$result = $conn->query("SELECT id, nome from
famosos");
if($result)
foreach($result as $row)
echo $row['id'] . '-' .
$row['nome'] . '<br>';
$conn = null;
?>
40. PDO – Exemplos
Exemplo 3: Excluindo dados via PDO
40
<?php
$conn = new
PDO('mysql:host=localhost;dbname=livros', 'Root',
'Unipe');
$conn->exec("DELETE FROM famosos WHERE id =
1");
$conn = null;
?>
42. 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]);
42
43. Exercício
• Etapa 2 – Preparação do Domínio
Crie uma pasta em htdocs chamada sistema;
43
44. 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;
44
45. 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;
45
46. 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;
46
47. 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;
47
49. Exercício
• Etapa 1 – Preparação do Banco de Dados no
phpmyadmin
Utilizaremos a mesma base criada no exercício anterior;
49
50. Exercício
• Etapa 2 – Preparação do Domínio
Utilizaremos a pasta sistema criada
anteriormente;
50
51. Exercício
• Etapa 3 – Criação de um formulário HTML
Utilizaremos o mesmo formulário do exercício
anterior;
51
52. Exercício
• Etapa 4 – Criação da classe Cadastro.php na
pasta sistema
52
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
53. 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;
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;
53
54. 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!
54