Fundamentos da Programação
PHP OO
Pós-Graduação em Desenvolvimento
Web
Apresentação
Apresentação
• Professor: Thyago Maia Tavares de Farias
– Doutorando em Computação pelo Cin / UFPE
– Mestre em Informática pelo PPGI / DI / UFPB
– Bacharel em Ciência da Computação – UFPB
– Currículo Lattes: http://lattes.thyagomaia.net
– E-Mail: thyagomaia@gmail.com
3
Apresentação
• Foco da disciplina
 Apresentar os fundamentos do paradigma
orientado a objetos aplicado em PHP (PHP OO);
4
Apresentação
• Referência Bibliográfica
 PHP – Programando
com Orientação a
Objetos
 Autor: Pablo Dall’Oglio
 Editora: Novatec
5
Apresentação
• Sites auxiliares:
– http://facebook.com/profthyagomaia
– http://twitter.com/thyagomaia
– http://www.slideshare.net/thyagomaia
– http://www.php.net
– http://www.w3schools.com
– http://www.codeacademy.com.br
6
Apresentação
• Aplicações que serão utilizados no curso:
– Notepad++
• https://notepad-plus-plus.org/
– Xampp
• https://www.apachefriends.org/pt_br/index.html
7
Apresentação
• Avaliação:
– Miniprojeto: Desenvolvimento de uma aplicação
PHP orientada a objetos;
• Trabalho em Grupo (3 integrantes);
• Tema Livre (Deverá ser pré-aprovado pelo professor);
– Critérios de Avaliação:
• Interface, usabilidade, aplicação das competências e
habilidades adquiridas durante o curso, aplicação de
pelo menos um padrão de projeto, organização do
Projeto e apresentação ao professor (até 15 min.);
8
Paradigmas de Programação
Paradigmas de Programação
 Uma linguagem de
programação (LP) = Notação
formal para descrição de
algoritmos em um
computador;
 É necessário entender as
organizações das LP, com
ênfase na compreensão dos
seus conceitos abstratos e
dos seus elementos de
representação;
10
Paradigmas de Programação
 Cada LP pode se relacionar com um método
de projeto específico;
 Cada linguagem de programação pode forçar
um certo estilo de programação;
 Tais estilos são chamados de paradigmas de
programação;
11
Paradigmas de Programação
 Principais paradigmas:
 Programação Procedural
 Programação Orientada a Objetos
12
Paradigmas de Programação
 Programação Procedural (Estruturado):
 Estilo de programação convencional (descrita no
aprendizado em algoritmos);
 Programas são decompostos em “passos” de
processamento;
 Rotinas são usadas na modularização de passos
específicos;
 Ex.: Pascal e C;
13
Paradigmas de Programação
 Programação Procedural:
14
program Teste;
var
a, b:integer;
begin
writeln('Digite um número para 7');
readln(a); writeln('Digite o número para 6');
readln(b);
if (a > b) then { Se 7 é maior que 6 então }
writeln('7 é maior que 6')
else { Senão… }
if (a < b) then
writeln('6 é maior que 7')
else
writeln('6 é igual à 7');
end.
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;
16
Paradigma de Programação OO
 O modelo OO é formado por quatro
componentes básicos:
 Objetos;
 Mensagens;
 Métodos;
 Classes;
17
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;
18
Paradigma de Programação OO
 Exemplo 1 – Implementação de uma classe em PHP:
19
// Arquivo Produto.php
<?php
class Produto
{
// Classe com 4 atributos
public $codigo;
public $descricao;
public $preco;
public $quantidade;
}
?>
Paradigma de Programação OO
 Exemplo 1 – Instanciando um objeto da classe
Produto:
20
// Arquivo testeObjeto.php
<?php
// Incluindo a classe criada anteriormente
require ‘classes/Produto.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:
21
// Arquivo Produto.class.php
<?php
class Produto
{
// Classe com 4 atributos
public $codigo;
public $descricao;
public $preco;
public $quantidade;
Paradigma de Programação OO
 Exemplo 2 – A classe Produto com atributos e um
método:
22
// Arquivo Produto.class.php
public 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:
23
// Arquivo testeObjeto.php
<?php
// Incluindo a classe criada anteriormente
require ‘classes/Produto.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);
25
Construtor
 Sintaxe:
26
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.;
27
Destrutor
 Sintaxe:
28
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;
30
Herança
 Uma subclasse
pode herdar
todos os
componentes de
uma classe pai;
 Permite a
criação de novas
classes sem
duplicação de
código; 31
Pessoa
nome: String
escreverNome()
Juridica
cnpj: String
validarCNPJ(): Boolean
Fisica
cpf: String
validarCPF(): Boolean
Superclasse: Características comuns
Subclasses: Características específicas
Herança
 Usamos a palavra reservada extends na assinatura
de uma classe para estabelecer uma hierarquia;
 Sintaxe:
32
<?php
class Filha extends Pai
{
// ...
Exercício
Exercício
• Etapa 1 – Preparação do Domínio
 Crie uma pasta em htdocs chamada heranca;
 Na pasta heranca, crie uma pasta chamada
classes;
34
Exercício
 Etapa 2 - Crie as seguintes classes na pasta
heranca/classes:
35
Funcionario
# nome: String
# salario: double
+ relatorioFunc()
Gerente
- projeto: String
Programador
- linguagem: String
OBS 1: Crie métodos
get e set caso seja necessário.
Construtores também podem
ser utilizados.
OBS 2: O métodos relatorio
simplesmente exibe as
informações do funcionário
no navegador
Exercício
• Etapa 3 – Criação de um formulário HTML
 Crie um formulário HTML que permita ao usuário
digitar o nome, salário e observações de um
funcionário, além de informar se o mesmo é um
gerente ou programador;
 Método de envio: POST;
 Os dados deverão ser submetidos para o script
“exibirFunc.php”;
 Salve o documento HTML na pasta heranca com o
nome index.html;
36
Exercício
• Etapa 4 – Criação do script exibirFunc.php na
pasta herança
 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 cargo do funcionário;
 Com o objeto criado, os dados enviados a partir do
formulário deverão ser submetidos para o mesmo;
 O script deverá executar o método relatorioFunc,
objetivando apresentar os dados do funcionário;
 O script deverá exibir as observações do funcionário (o
projeto ou a linguagem de programação);
37

Fundamentos da Programação PHP OO - Aula 1

  • 1.
    Fundamentos da Programação PHPOO Pós-Graduação em Desenvolvimento Web
  • 2.
  • 3.
    Apresentação • Professor: ThyagoMaia Tavares de Farias – Doutorando em Computação pelo Cin / UFPE – Mestre em Informática pelo PPGI / DI / UFPB – Bacharel em Ciência da Computação – UFPB – Currículo Lattes: http://lattes.thyagomaia.net – E-Mail: thyagomaia@gmail.com 3
  • 4.
    Apresentação • Foco dadisciplina  Apresentar os fundamentos do paradigma orientado a objetos aplicado em PHP (PHP OO); 4
  • 5.
    Apresentação • Referência Bibliográfica PHP – Programando com Orientação a Objetos  Autor: Pablo Dall’Oglio  Editora: Novatec 5
  • 6.
    Apresentação • Sites auxiliares: –http://facebook.com/profthyagomaia – http://twitter.com/thyagomaia – http://www.slideshare.net/thyagomaia – http://www.php.net – http://www.w3schools.com – http://www.codeacademy.com.br 6
  • 7.
    Apresentação • Aplicações queserão utilizados no curso: – Notepad++ • https://notepad-plus-plus.org/ – Xampp • https://www.apachefriends.org/pt_br/index.html 7
  • 8.
    Apresentação • Avaliação: – Miniprojeto:Desenvolvimento de uma aplicação PHP orientada a objetos; • Trabalho em Grupo (3 integrantes); • Tema Livre (Deverá ser pré-aprovado pelo professor); – Critérios de Avaliação: • Interface, usabilidade, aplicação das competências e habilidades adquiridas durante o curso, aplicação de pelo menos um padrão de projeto, organização do Projeto e apresentação ao professor (até 15 min.); 8
  • 9.
  • 10.
    Paradigmas de Programação Uma linguagem de programação (LP) = Notação formal para descrição de algoritmos em um computador;  É necessário entender as organizações das LP, com ênfase na compreensão dos seus conceitos abstratos e dos seus elementos de representação; 10
  • 11.
    Paradigmas de Programação Cada LP pode se relacionar com um método de projeto específico;  Cada linguagem de programação pode forçar um certo estilo de programação;  Tais estilos são chamados de paradigmas de programação; 11
  • 12.
    Paradigmas de Programação Principais paradigmas:  Programação Procedural  Programação Orientada a Objetos 12
  • 13.
    Paradigmas de Programação Programação Procedural (Estruturado):  Estilo de programação convencional (descrita no aprendizado em algoritmos);  Programas são decompostos em “passos” de processamento;  Rotinas são usadas na modularização de passos específicos;  Ex.: Pascal e C; 13
  • 14.
    Paradigmas de Programação Programação Procedural: 14 program Teste; var a, b:integer; begin writeln('Digite um número para 7'); readln(a); writeln('Digite o número para 6'); readln(b); if (a > b) then { Se 7 é maior que 6 então } writeln('7 é maior que 6') else { Senão… } if (a < b) then writeln('6 é maior que 7') else writeln('6 é igual à 7'); end.
  • 15.
  • 16.
    Paradigma de ProgramaçãoOO  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; 16
  • 17.
    Paradigma de ProgramaçãoOO  O modelo OO é formado por quatro componentes básicos:  Objetos;  Mensagens;  Métodos;  Classes; 17
  • 18.
    Paradigma de ProgramaçãoOO  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; 18
  • 19.
    Paradigma de ProgramaçãoOO  Exemplo 1 – Implementação de uma classe em PHP: 19 // Arquivo Produto.php <?php class Produto { // Classe com 4 atributos public $codigo; public $descricao; public $preco; public $quantidade; } ?>
  • 20.
    Paradigma de ProgramaçãoOO  Exemplo 1 – Instanciando um objeto da classe Produto: 20 // Arquivo testeObjeto.php <?php // Incluindo a classe criada anteriormente require ‘classes/Produto.php’; // Criando um objeto $produto = new Produto(); // Atribuindo valores aos atributos $produto->codigo = 4001; $produto->descricao = ‘CD – AC/DC’; ?>
  • 21.
    Paradigma de ProgramaçãoOO  Exemplo 2 – A classe Produto com atributos e um método: 21 // Arquivo Produto.class.php <?php class Produto { // Classe com 4 atributos public $codigo; public $descricao; public $preco; public $quantidade;
  • 22.
    Paradigma de ProgramaçãoOO  Exemplo 2 – A classe Produto com atributos e um método: 22 // Arquivo Produto.class.php public function imprimeEtiqueta() { echo ‘Código: ’ . $this->codigo . ‘<br>’; echo ‘Descrição: ’ . $this- >descricao . ‘<br>’; } } ?>
  • 23.
    Paradigma de ProgramaçãoOO  Exemplo 2 – Instanciando um objeto da classe Produto e executando um método do mesmo: 23 // Arquivo testeObjeto.php <?php // Incluindo a classe criada anteriormente require ‘classes/Produto.php’; // Criando um objeto $produto = new Produto(); // Atribuindo valores aos atributos $produto->codigo = 4001; $produto->descricao = ‘CD – AC/DC’; $produto->imprimeEtiqueta(); ?>
  • 24.
    PHP OO –Construtores e Destrutores
  • 25.
    Construtor  Método especialutilizado 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); 25
  • 26.
  • 27.
    Destrutor  Método especiala 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.; 27
  • 28.
  • 29.
    PHP OO –Herança
  • 30.
    Herança  Permite reutilizaratributos 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; 30
  • 31.
    Herança  Uma subclasse podeherdar todos os componentes de uma classe pai;  Permite a criação de novas classes sem duplicação de código; 31 Pessoa nome: String escreverNome() Juridica cnpj: String validarCNPJ(): Boolean Fisica cpf: String validarCPF(): Boolean Superclasse: Características comuns Subclasses: Características específicas
  • 32.
    Herança  Usamos apalavra reservada extends na assinatura de uma classe para estabelecer uma hierarquia;  Sintaxe: 32 <?php class Filha extends Pai { // ...
  • 33.
  • 34.
    Exercício • Etapa 1– Preparação do Domínio  Crie uma pasta em htdocs chamada heranca;  Na pasta heranca, crie uma pasta chamada classes; 34
  • 35.
    Exercício  Etapa 2- Crie as seguintes classes na pasta heranca/classes: 35 Funcionario # nome: String # salario: double + relatorioFunc() Gerente - projeto: String Programador - linguagem: String OBS 1: Crie métodos get e set caso seja necessário. Construtores também podem ser utilizados. OBS 2: O métodos relatorio simplesmente exibe as informações do funcionário no navegador
  • 36.
    Exercício • Etapa 3– Criação de um formulário HTML  Crie um formulário HTML que permita ao usuário digitar o nome, salário e observações de um funcionário, além de informar se o mesmo é um gerente ou programador;  Método de envio: POST;  Os dados deverão ser submetidos para o script “exibirFunc.php”;  Salve o documento HTML na pasta heranca com o nome index.html; 36
  • 37.
    Exercício • Etapa 4– Criação do script exibirFunc.php na pasta herança  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 cargo do funcionário;  Com o objeto criado, os dados enviados a partir do formulário deverão ser submetidos para o mesmo;  O script deverá executar o método relatorioFunc, objetivando apresentar os dados do funcionário;  O script deverá exibir as observações do funcionário (o projeto ou a linguagem de programação); 37