orientação a objetos php
TRANSCRIPT
![Page 1: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/1.jpg)
Facilitador: Renan Gurgel
![Page 2: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/2.jpg)
Introduzida a partir do PHP3
Fortalecida com a versão do PHP4
Com o PHP5 fica mais robusta e com os principais conceitos da OO.
![Page 3: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/3.jpg)
Base da OO
“O projeto da casa” (projeto do objeto)
Template de objeto Estrutura estática utilizada para descrever
objetos mediante atributos e métodos
![Page 4: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/4.jpg)
![Page 5: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/5.jpg)
![Page 6: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/6.jpg)
![Page 7: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/7.jpg)
Uma classe por arquivo
Padrões de nomeclatura:
Padrao_Zend_ou_Pear
PadraoCamelCase
![Page 8: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/8.jpg)
“A casa em si”
Contém informações
Sua estrutura é dinâmica, ou seja seus atributos podem mudar de valor durante a execução do programa
Pode-se declarar diversos objetos de uma mesma classe
![Page 9: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/9.jpg)
![Page 10: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/10.jpg)
Através do operador NEW
![Page 11: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/11.jpg)
Declarados na classe
Usado nos objetos
Propriedades dos objetos
![Page 12: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/12.jpg)
No PHP 4 era assim...
![Page 13: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/13.jpg)
No PHP 5 é assim:
![Page 14: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/14.jpg)
Métodos mágicos
Inseridos a partir do PHP5
Sempre começam com _ _
14 no PHP 5.3
Os 2 principais são: __construct()
__destruct()
Todos os métodos mágicos em: http://www.php.net/manual/pt_BR/language.oop5.magic.php
![Page 15: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/15.jpg)
Executado na instância do objeto
Não pode retornar nada
Pode sofrer sobrecarga
Pode receber argumentos
![Page 16: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/16.jpg)
Acionado quando não existe mais referências para o objeto ou quando chega ao fim do script
Pode ser útil em:
Banco de dados
Logs
![Page 17: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/17.jpg)
Variável especial $this Automaticamente definida
Referência ao próprio objeto
Acessando atributos
$this->nomeDoAtributo (ex: $this->cpf )
Acessando métodos
$this->nomeDoMetodo() (ex: $this->getCpf() )
![Page 18: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/18.jpg)
Vamos trabalhar um pouco
né?
![Page 19: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/19.jpg)
Testem...
$renan = new Pessoa();$renan->setNome('Renan');
echo $renan->getNome()."<br />";
![Page 20: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/20.jpg)
A partir do PHP5
Public
Private
Protected
![Page 21: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/21.jpg)
Esqueça o var
O encapsulamento é a chave da OO
![Page 22: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/22.jpg)
Membros declarados assim só podem ser acessados dentro da classe em que foram declarados
Não pode ser acessado a partir de uma classe descendente
Não pode ser acessado a partir do programa que faz uso dessa classe
![Page 23: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/23.jpg)
Membros declarados como protected podem ser acessados dentro da classe
Podem ser acessados em classes descendentes
Não pode ser acessado a partir do programa que faz uso dessa classe
![Page 24: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/24.jpg)
Membros declarados como public podem ser acessados livremente na classe em que foram declarados
Podem ser acessados em classes descendentes
Pode ser acessado a partir do programa que faz uso dessa classe
![Page 25: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/25.jpg)
Se nenhum desses for declarado o
public é definido por padrão
![Page 26: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/26.jpg)
Para continuar o suporte ao encapsulamento
Usado para configurações de
Banco de dados e nomes de
usuários
Palavra chave const
Acesso :: (operador de resolução de escopo)
![Page 27: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/27.jpg)
É um filho poder obter algumas características do pai
Há casos em que é necessário ter objetos idênticos com algumas funcionalidades a mais ou então com as mesmas funcionalidades, mas com comportamentos diferentes
![Page 28: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/28.jpg)
![Page 29: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/29.jpg)
Ambos são veículos!
![Page 30: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/30.jpg)
Podemos dizer que eles pertencem a
classe veiculo
![Page 31: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/31.jpg)
Para dizer que uma classe herda de outra usamos a palavra chave
EXTENDS
![Page 32: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/32.jpg)
EX:
![Page 33: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/33.jpg)
![Page 34: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/34.jpg)
Polymorphos (Grego) – Múltiplas formas
Várias classes podem possuir a mesma estrutura, mas comportamento diferentes
Ao utilizar herança podemos não só aproveitar os métodos da classe pai, como também fazer com que algumas de suas características sejam alteradas
![Page 35: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/35.jpg)
Desculpe, ainda não entendi...
![Page 36: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/36.jpg)
Imagine que um banco possua 2
tipos de cheques
![Page 37: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/37.jpg)
CHEQUE COMUM
CHEQUE ESPECIAL
X
![Page 38: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/38.jpg)
Ambos possuem a mesma estrutura
O que diferencia um do outro é a forma de cobrança de juros
O cheque comum cobra 25%
ENTÃO...
![Page 39: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/39.jpg)
![Page 40: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/40.jpg)
![Page 41: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/41.jpg)
No cheque especial os juros cobrados são de 10% e não 25%
Vamos aproveitar a mesma estrutura apenas redefinindo o método calculaJuros
![Page 42: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/42.jpg)
![Page 43: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/43.jpg)
![Page 44: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/44.jpg)
![Page 45: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/45.jpg)
Self refere-se a classe atual e é normalmente usado para acessar:
Métodos
Constantes
![Page 46: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/46.jpg)
Parent:
Refere-se a classe pai
Normalmente usado para chamar o construtor ou métodos da classe pai
![Page 47: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/47.jpg)
Vamos a um
exemplo
![Page 48: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/48.jpg)
![Page 49: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/49.jpg)
Usado para quando você não quer que a sua classe/método possa se estender mais
Basta utilizar a palavra chave final
Exemplos:
![Page 50: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/50.jpg)
![Page 51: Orientação a objetos php](https://reader033.vdocuments.com.br/reader033/viewer/2022052322/558169d1d8b42ae15f8b45d7/html5/thumbnails/51.jpg)