Você está na página 1de 41

POO

 em  PHP  
Introdução  
•  Possui  suporte  a  OO  desde  a  versão  3.    
•  A  versão  4  foi  reescrita  com  o  obje=vo  de  
tornar  mais  rápida  e  estável.    
•  No  PHP  5  foi  desenvolvido  um  novo  modelo  
de  objetos,  completamente  reescrito,  mais  
completo,  permi8ndo  uma  performance  
melhor  e  mais  vantagens.    
Diferenças  entre  o  PHP  4  e  o  PHP  5    
•  PHP  4  -­‐  Classes  simples:    

–  Uma  tenta=va  a  orientação  à  objetos    

–  Porém  sem  muitos  conceitos  considerados  


importantes  para  uma  linguagem  orientada  a  
objetos    
Diferenças  entre  o  PHP  4  e  o  PHP  5    
Diferenças  entre  o  PHP  4  e  o  PHP  5    
•  PHP  5  -­‐  Classes  mais  completas  e  uso  de  
padrões:    
–  Com  implementação  de  recursos  semelhantes  às  
linguagens  de  programação  como  C++  e  Java.    
Diferenças  entre  o  PHP  4  e  o  PHP  5    
Escrevendo  uma  Classe  
$this  
•  Uma  pseudo  variável  $this  está  disponível  
quando  um  método  da  classe  é  chamado  
dentro  de  um  contexto  de  objeto.    
–  Sua  implementação  normalmente  se  encontra  
dentro  do  escopo  de  um  método.    
–  $this  é  uma  referência  para  o  objeto  ao  chamar  
um  método  ou  um  atributo.    
$this  
Encapsulamento  
•  O  encapsulamento  (ou  visibilidade)  de  um  
atributo  ou  de  um  método  pode  ser  definido  
prefixando  a  declaração  com  as  palavras-­‐
chave:    
–  public:  podem  ser  acessados  por  todo  script.    
–  protected:  limita  o  acesso  a  classes  herdadas  e  
para  classe  que  define  o  objeto.    
–  private:  limita  a  visibilidade  para  apenas  a  classe  
que  define  o  objeto.    
Encapsulamento  
Construtores  e  Destrutores  
•  PHP  5  permite  que  os  desenvolvedores  declarem  
métodos  construtores  para  as  classes.  Isto  é  feito  
através  do  método  mágico  __construct().    

•  Classes  que  tem  um  método  construtor  chamam  


esse  método  cada  vez  que  um  objeto  novo  é  
criado,  sendo  apropriado  para  qualquer  
inicialização  que  o  objeto  necessite  no  momento  
em  que  é  instanciado.    
Construtores  e  Destrutores  
Instanciando  um  Objeto  
•  Para  criar  uma  instância  de  um  objeto  da  
classe,  um  novo  objeto  deve  ser  criado  
(instanciado)  e  atribuído  à  uma  variável.    

•  Para  tanto  é  necessário  a  chamada  da  palavra  


reservada  new  seguido  do  nome  da  classe  
para  criar  um  novo  objeto,  instanciando  então  
a  classe  (ou  um  objeto  da  classe).    
Instanciando  um  Objeto  
•  Criar  uma  classe  por  arquivo  e  nomear  arquivo  
com  o  nome  da  classe    
–  Ex.:  MinhaClasse.php    
•  Tipificar  as  variáveis  PHP  na  nomenclatura  da  
variável    
–  Ex.:  $aCidades  [  ]  =  $oCidade  (array  de  cidades  recebe  
objeto  cidade)    
•  U=lize  caminho  rela=vo  na  inclusão  de  arquivos    
–  "./pasta/arquivo.php"    
•  Se  =ver  somente  código  PHP  não  feche  a  tag  PHP  
(porque?)    
Instanciando  um  Objeto  
Instanciando  um  Objeto  
Exercício  
•  Crie  a  classe  ao  lado,  
seus  atributos  e  
métodos  e  a  manipule  
através  de  um  arquivo  
com  o  nome  
appFuncionario.php.    
Herança  
•  Como  no  mundo  real,  em  orientação  a  objetos  
a  palavra  herança  sugere  a  construção  de  uma  
classe  com  base  em  outra  já  existente.    

•  Ou  seja,  a  criação  de  uma  nova  classe  que  


herda  as  caracterís=cas,  propriedades  e  
comportamentos  de  uma  classe  base  (ou  
classe  pai)  .    
Herança  
•  Tal  conceito  é  conhecido  também  como  
Generalização.    

•  Herança  permite  que  a  classe  filha  usufrua  das  


propriedades  e  comportamentos  da  classe  pai  
(exceto  privados),  assim  como  a  alteração  de  
tais  comportamentos  e  a  criação  de  novas  
propriedades  e  atributos  específicos.    
Herança  
•  Em  PHP  uma  classe  pode  herdar  propriedades  e  métodos  
de  outra  classe  usando  a  palavra-­‐chave  extends  na  sua  
declaração.    

•  Não  é  possível  herdar  classes  múl=plas,  uma  classe  só  pode  


herdar  uma  classe  base  (ou  classe  pai,  ou  ainda  classe  
genérica).    

•  Para  acessar  atributos  e  métodos  da  classe  pai,  u=liza-­‐se  a  


palavra  reservada  parent  seguida  de  dois  pontos  duplos  (::).    
Herança  
•  Diagrama  ao  lado.    
–  A  classe  Dependentes  
(classe  filha)  estende  a  
classe  Funcionario  
(úlBmo  exercício),  
aplicando  o  conceito  de  
generalização  (herança).    
–  A  classe  Dependentes  
herda  as  propriedades  e  
atributos  da  classe  
Funcionario  (classe  pai).    
Herança  
Herança  -­‐  Exemplo  
Herança  -­‐  Exemplo  
Método  toString  
Referência  de  Objetos  
•  Sempre  que  uma  variável  do  =po  objeto  é  atribuída  a  uma  
outra  variável,  ele  recebe  somente  a  referência  deste  
objeto.    
•  Tais  variáveis  referenciam  exatamente  o  mesmo  objeto.    
Cópia  de  Objetos  
•  Necessário  quando  precisamos  clonar  (copiar)  um  objeto,  
criando  outro  espaço  em  memória  ao  invés  de  uma  
referência.    
•  Neste  caso  é  criada  uma  nova  instância  do  objeto,  
contendo  as  mesmas  propriedades  e  métodos.    
Métodos  e  Atributos  Está=cos  
•  Declarar  atributos  ou  métodos  de  uma  classe  
como  está=cos  faz  deles  acessíveis  sem  
precisar  de  instanciar  a  classe.    

•  A  palavra  reservada  staBc  é  uBlizada  na  


declaração  de  atributos  e  métodos  estáBcos.    
Métodos  e  Atributos  Está=cos  
•  A  referência  aos  atributos  está=cos  da  classe  é  
feita  através  da  palavra  reservada  self  seguida  
de  dois  pontos  duplos  (::)  em  vez  de  “$this-­‐>”.    

•  Um  atributo  declarado  como  está=co  não  


pode  ser  acessado  com  um  objeto  instanciado  
da  classe  (embora  métodos  está=cos  podem).    
Métodos  e  Atributos  Está=cos  
Métodos  set  e  get  
•  Provê  meios  dinâmicos  para  manipular  
atributos  (propriedades)  e  métodos  em  PHP.    
•  U=lizados  na  manipulação  de  métodos  e  
propriedades  não  declarados  explicitamente  
ou  não  visíveis  no  escopo  atual.    
•  Este  procedimento  é  feito  através  dos  
métodos  mágicos.    
Métodos  set  e  get  
•  __set  ()  :  executado  para  a  atribuição  de  
valores  em  propriedades  inacessíveis.    

•  __get  ()  :  u=lizada  para  retornar  valores  de  


propriedades  inacessíveis.    
Métodos  set  e  get  
Métodos  set  e  get  -­‐  Exemplo  
Métodos  set  e  get  -­‐  Exemplo  
Indução  de  Tipo  
•  PHP  5  implementa  indução  de  =po.    
•  Neste  conceito,  funções  e  métodos  podem  
forçar  parâmetros  a  serem  objetos  de  uma  
classe.    
•  Basta  especificar  o  nome  da  classe  no  
desenvolvimento  da  função  ou  método.    
•  É  possível  também  aplicar  em  arrays  (PHP  5.1).    
Indução  de  Tipo  
Tarefa  
•  Procurar  sobre:  
–  Classe  e  métodos  abstratos.  
–  Interfaces.  
–  Polimorfismo.  
–  Tratamento  de  Exceções    
Exercícios  
1.  Crie  uma  classe  chamada  de  Aluno,  esta  classe  tem  os  seguintes  atributos:  matricula,  nome,  e-­‐mail,  
curso,  fone,  cel.,  endereço.  Esta  classe  deve  conter  os  métodos  acessadores  e  modificadores  (get  e  set)  e  
além  do  construtor  padrão,  mais  um  construtor  que  recebe  todos  os  atributos  como  parâmetros.  

2.  Criar  uma  classe  Funcionário  que  tem  matrícula,  nome  e  salário.  Usando  herança  crie  a  classe  Consultor.  
Esta  classe  deve  sobrescrever  o  método  getSalario()  que  deve  retornar  o  salário  mais  10%.  Outra  
par=cularidade  deve  ser  implementada  u=lizando  o  conceito  de  sobrecarga  com  o  método  getSalario  
(float  percentual),  onde  este  método  determina  o  percentual  a  ser  acrescido  no  salário  do  consultor.  
3.  Escreva  uma  classe  Conta  que  contenha  o  nome  do  cliente,  o  numero  da  conta,  o  saldo  e  o  limite.  Estes  
valores  deverão  ser  informados  no  construtor,  sendo  que  o  limite  não  poderá  ser  maior  que  o  valor  do  
salário  mensal  do  cliente.  Faca  um  método  deposito  e  um  método  re=ra.  O  método  re=ra  ira  devolver  
true  ou  false,  dependendo  se  o  cliente  pode  re=rar.  Faca  um  método  saldo  que  retorne  o  saldo  do  
cliente.  

4.  Escreva  uma  classe  ContaEspecial  que  funciona  como  a  classe  do  exercício  anterior,  mas  que  aceite  um  
limite  de  ate  3x  o  valor  do  salário  do  cliente.  

5.  Escreva  uma  classe  Cartao  que  receba  um  objeto  do  =po  conta  e  uma  senha.  Ela  deverá  conter  um  
método  saque()  e  um  método  saldo(),  semelhante  à  classe  do  exercício  3,  mas  que  receba  uma  senha  
que  devera  ser  a  mesma  armazenada  no  cartão.  Faça  também  um  método  que  altere  a  senha,  desde  
que  receba  a  senha  an=ga  como  parâmetro.  
Referências  
•  MENDONÇA,  G.    Uma  abordagem  prá8ca  de  
Orientação  a  Objetos  com  PHP.  FLISoL  -­‐  
Fes=val  La=noamericano  de  Instalação  de  
Sorware  Livre.  Brasília,  2011.  

Você também pode gostar