www.galvao.eti.br
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 1 / 18
Programação Orientada a Objetos
Professor Er Galvão Abbott
Programação Orientada a Objetos
como Linguagem de Implementação
Slide 2
Slide 2 text
Presidente da ABRAPHP – Associação Brasileira de Profissionais PHP
Diretor da PHP Conference Brasil
Contribui para a tradução da documentação oficial
Atua como Zend Framework Evangelist para o ZTeam, da Zend.
Professor Especialista de Pós-Graduação
20+ anos desenvolvendo sistemas e aplicações com interface web
15+ destes com PHP
7+ com Zend Framework
Palestrante em eventos nacionais e internacionais
Instrutor de cursos presenciais e a distância
Fundador e líder do GU PHPBR
Fundador* e membro do GU PHPRS
Site: http://www.galvao.eti.br/
http://people.php.net/galvao
Twitter: @galvao
Slides e Documentos: http://slideshare.net/ergalvao
Github: http://github.com/galvao
Posts: https://medium.com/@galvao
Quem?!
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 2 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Slide 3
Slide 3 text
Conteúdo
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 3 / 18
www.galvao.eti.br
●
O Paradigma de Orientação a Objetos
●
Vantagens e Desvantagens
●
Generalização e conceitualização de Objetos
●
Atributos e Ações
●
Particularidades da Orientação a Objetos para desenvolvimento web
●
Particularidades da linguagem PHP
●
Classes e Objetos
●
Atributos
●
Métodos
●
Herança
●
Injeção de Dependências
●
Namespaces
●
Autoloading
●
Abstração e Interfaces
●
Traits
●
Atributos e Métodos Estáticos
●
Métodos Especiais
●
Funções Auxiliares
Programação Orientada a Objetos
Slide 4
Slide 4 text
O Paradigma da Orientação a Objetos
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 4 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Sequencial → Funcional → Orientada a Objetos
Slide 5
Slide 5 text
Sequencial
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 5 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Slide 6
Slide 6 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 6 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Alto índice de repetição de código
Não há necessidade de conceitualização
Inexistência de Generalização
Inexistência de Abstração
Inexistência de Persistência
Difícil Organização
Longo tempo de Manutenção
Praticidade
Simplicidade
Curto tempo de criação
Sequencial
Slide 7
Slide 7 text
Sequencial → Funcional
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 7 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Slide 8
Slide 8 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 8 / 18
www.galvao.eti.br
Programação Orientada a Objetos
fn ( x , y )
{
}
Funcional
Slide 9
Slide 9 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 9 / 18
www.galvao.eti.br
Programação Orientada a Objetos
fn ( x , y )
{
}
Funcional
Médio índice de repetição de código
Alguma conceitualização
Alguma Generalização
Inexistência de Abstração
Inexistência de Persistência
Razoável/Difícil Organização
Médio tempo de Manutenção
Razoável Praticidade
Razoável Simplicidade
Médio tempo de criação
Slide 10
Slide 10 text
Funcional → Orientada a Objetos
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 10 / 18
www.galvao.eti.br
Programação Orientada a Objetos
●
Identificação do Objeto
●
Definição de Características (Atributos)
●
Definição de Ações (Métodos)
●
Conceitualização / Generalização
●
Abstração
Slide 11
Slide 11 text
Orientada a Objetos
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 11 / 18
www.galvao.eti.br
Programação Orientada a Objetos
fn ()
{
}
class
{
}
x , y
fn ()
{
}
}
Slide 12
Slide 12 text
Orientada a Objetos
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 12 / 18
www.galvao.eti.br
Programação Orientada a Objetos
fn ()
{
}
class
{
}
x , y
fn ()
{
}
}
Baixa Simplicidade
Longo tempo de criação
Baixo/Inexistente índice de repetição de código
Alta conceitualização
Alta Generalização
Alta Abstração
Persistência
Alta Organização
Médio/Curto Tempo de Manutenção
Slide 13
Slide 13 text
Orientação a Objetos e a Web
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 13 / 18
www.galvao.eti.br
Programação Orientada a Objetos
/
log
public
css
img
js
/
class
log
public
css
img
js
Slide 14
Slide 14 text
A Web
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 14 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Requisição: index.php
Processamento
Resultado
/public/index.php
Browser
Browser
Slide 15
Slide 15 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 15 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Requisição: index.php
Processamento
Resultado
/public/index.php
Browser
Browser
Orientação a Objetos e a Web
/class/classe.php
Slide 16
Slide 16 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 16 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Orientação a Objetos e PHP
●
Métodos Construtores possuem nomes especiais
●
Herança Simples*
●
Não há sobrecarga de métodos
Diferenças mais notáveis para outras linguagens OO:
●
Namespaces
●
Traits
●
Classes Anônimas**
●
Serialização
Características OO notáveis:
Slide 17
Slide 17 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 17 / 18
www.galvao.eti.br
Programação Orientada a Objetos
Classes são instruções de código-fonte responsáveis
pela geração de Objetos.
Cada Objeto gerado possui a mesma estrutura ditada
pela Classe, ou seja, basicamente possui as mesmas
Características (Atributos) e pode desempenhar as
mesmas Ações (Métodos).
Classes e Objetos
Slide 18
Slide 18 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott - 6/4/16 - 18 / 18
www.galvao.eti.br
Programação Orientada a Objetos
C
O1 O2 O3 O4
x, y
fn ()
x, y
fn ()
x, y
fn ()
x, y
fn ()
Classes e Objetos