Orientação a objetos com PHP
         Prof. Leonardo Soares




          Campus Garanhuns
Softwares orientado a objetos


Orientação a objetos é um paradigma computacional que
propõe uma metodologia para construção de software
A base deste paradigma está em associar o domínio do
problema do software à objetos que se relacionam, similar a
nossa realide
PHP desde a versão 5 oferece suporte completo a orientação a
objetos
Suporte do PHP a O.O.


Classes e objetos
Métodos, controle de visibilidade
Herança, interfaces, classes e métodos abstratos
Ponteiro this
Dentre outros recursos específicos do PHP
Declaração de classes


Classes são a base para orientação a objetos, elas representam
algum domínio do problema de nosso software
Assim como no Java e em outras linguagens a declaração de uma
classe começa pela palavra class
Em geral criamos um arquivo .php para cade classe
Exercício


Vamos transformar em orientado a objetos nosso
sistema de cadastro de cursos
Declarem uma classe para representar um curso da
escola
Construtores e destrutores

São um tipo especial de “métodos” que são invocados quando
um objeto é instanciado ou deletado
Os utilizamos para iniciar recursos e atributos (construtor) e
liberar recursos quando não mais necessários (destrutor)
Para construtores utilizamos a sintaxe __construct e __destruct
Antes do PHP5 havia a possibilidade de utilizar construtores com
o mesmo nome da classe, porém isto está deprecated
Exercício


Implementem o construtor para a nossa classe Curso
Atributos de classes


Atributos são usados para definir a estrutura de uma classe
Valores para estes atributos definem estados para um objeto
Estes atributos podem ser inicializados com um valor pré-
definido
Caso observem a declaração de variáveis precedida pela palavra
var, não se assustem equivale a declaração public e está em
desuso
O construtor da classe também pode ser usado para inicializar
os valores destes atributos
Exercício


Adicionem os atributos/propriedades nome e carga
horária à nossa classe Curso
Ponteiro $this


Quando precisamos acessar atributos ou métodos de nossas
classes, o fazemos através de uma “pseudo-variável”
denominada $this
Para quem vem de Java ou C++, já ouviu falar do ponteiro this
Seu uso em PHP é obrigatório!
Declaração de métodos


Métodos são ações ou operações que uma classe pode
realizar
Sua declaração é similar aos das funções que já vimos, exceto
pela possibilidade de utilizar controles de visibilidade
Exercício


Implementem os métodos gets e setters para a nossa
classe
Herança


Herança permite que relações de similaridade que existe em nosso
cotidiano posssam ser representadas na orientação a objetos
PHP permite o uso de heranças de maneira similar ao Java, onde
declaramos uma classe pai, em seguida a classe filha e utilizamos o
operador extends para fazer a herança entre elas
O acesso a métodos da classe pai é feito através da palavra
reservada parent::
Autoloading de classes


Como dito anteriormente, em geral, criamos um arquivo .php
para cada classe. Qual o problema com isto?
PHP oferece uma forma de evitar a necessidade de múltiplos
includes em uma página, e o chama de Autoloading de classes
O autoloading é realizado através de uma função denominada
__autoload(nome_classe)  Problema!!!
Operador de resolução de escopo ::


O acesso a determinadas propriedades e métodos é feito de forma
diferente dependendo de como eles tenham sido declarados
Para acesso a métodos declarados em classes pai vimos que
utilizamos o operador parent::
Para o acesso a atributos constantes utilizamos a sintaxe
Classe::atributo
Para o acesso a atributos estáticos utilizamso o operador self::
sucedido do nome da variável com $
Classes abstratas


Classes abstratas não podem ser instanciadas e métodos
abstratos não possuem implementação
O uso de classes abstratas possibilita um “contrato” entre essas
classes e as classes que irão estendê-las
A declaração de classes abstratas e métodos abstratos é feita
através da palavra reservada abstract
Interfaces


Também são usadas como forma de estabelecer um
contrato
Diferem de classes abstratas por alguns aspectos:
  Não podem implementar métodos
  Não possuem atritubos
  Possibilitam uma “alternativa” a impossibilidade de
  herança multipla
Para utilizá-las é usado a palavra reservada
implements
Muito obrigado!

Orientação a objetos com PHP

  • 1.
    Orientação a objetoscom PHP Prof. Leonardo Soares Campus Garanhuns
  • 2.
    Softwares orientado aobjetos Orientação a objetos é um paradigma computacional que propõe uma metodologia para construção de software A base deste paradigma está em associar o domínio do problema do software à objetos que se relacionam, similar a nossa realide PHP desde a versão 5 oferece suporte completo a orientação a objetos
  • 3.
    Suporte do PHPa O.O. Classes e objetos Métodos, controle de visibilidade Herança, interfaces, classes e métodos abstratos Ponteiro this Dentre outros recursos específicos do PHP
  • 4.
    Declaração de classes Classessão a base para orientação a objetos, elas representam algum domínio do problema de nosso software Assim como no Java e em outras linguagens a declaração de uma classe começa pela palavra class Em geral criamos um arquivo .php para cade classe
  • 5.
    Exercício Vamos transformar emorientado a objetos nosso sistema de cadastro de cursos Declarem uma classe para representar um curso da escola
  • 6.
    Construtores e destrutores Sãoum tipo especial de “métodos” que são invocados quando um objeto é instanciado ou deletado Os utilizamos para iniciar recursos e atributos (construtor) e liberar recursos quando não mais necessários (destrutor) Para construtores utilizamos a sintaxe __construct e __destruct Antes do PHP5 havia a possibilidade de utilizar construtores com o mesmo nome da classe, porém isto está deprecated
  • 7.
    Exercício Implementem o construtorpara a nossa classe Curso
  • 8.
    Atributos de classes Atributossão usados para definir a estrutura de uma classe Valores para estes atributos definem estados para um objeto Estes atributos podem ser inicializados com um valor pré- definido Caso observem a declaração de variáveis precedida pela palavra var, não se assustem equivale a declaração public e está em desuso O construtor da classe também pode ser usado para inicializar os valores destes atributos
  • 9.
    Exercício Adicionem os atributos/propriedadesnome e carga horária à nossa classe Curso
  • 10.
    Ponteiro $this Quando precisamosacessar atributos ou métodos de nossas classes, o fazemos através de uma “pseudo-variável” denominada $this Para quem vem de Java ou C++, já ouviu falar do ponteiro this Seu uso em PHP é obrigatório!
  • 11.
    Declaração de métodos Métodossão ações ou operações que uma classe pode realizar Sua declaração é similar aos das funções que já vimos, exceto pela possibilidade de utilizar controles de visibilidade
  • 12.
    Exercício Implementem os métodosgets e setters para a nossa classe
  • 13.
    Herança Herança permite querelações de similaridade que existe em nosso cotidiano posssam ser representadas na orientação a objetos PHP permite o uso de heranças de maneira similar ao Java, onde declaramos uma classe pai, em seguida a classe filha e utilizamos o operador extends para fazer a herança entre elas O acesso a métodos da classe pai é feito através da palavra reservada parent::
  • 14.
    Autoloading de classes Comodito anteriormente, em geral, criamos um arquivo .php para cada classe. Qual o problema com isto? PHP oferece uma forma de evitar a necessidade de múltiplos includes em uma página, e o chama de Autoloading de classes O autoloading é realizado através de uma função denominada __autoload(nome_classe) Problema!!!
  • 15.
    Operador de resoluçãode escopo :: O acesso a determinadas propriedades e métodos é feito de forma diferente dependendo de como eles tenham sido declarados Para acesso a métodos declarados em classes pai vimos que utilizamos o operador parent:: Para o acesso a atributos constantes utilizamos a sintaxe Classe::atributo Para o acesso a atributos estáticos utilizamso o operador self:: sucedido do nome da variável com $
  • 16.
    Classes abstratas Classes abstratasnão podem ser instanciadas e métodos abstratos não possuem implementação O uso de classes abstratas possibilita um “contrato” entre essas classes e as classes que irão estendê-las A declaração de classes abstratas e métodos abstratos é feita através da palavra reservada abstract
  • 17.
    Interfaces Também são usadascomo forma de estabelecer um contrato Diferem de classes abstratas por alguns aspectos: Não podem implementar métodos Não possuem atritubos Possibilitam uma “alternativa” a impossibilidade de herança multipla Para utilizá-las é usado a palavra reservada implements
  • 18.

Notas do Editor

  • #7 A definição de se construtoressãométodosounãovariam entre autores
  • #14 Éobrigatórioque a classepaisejadeclaradaouincluida antes da classefilho