1. OOP em PHP
PHP Summer School - 18 de Julho de 2007
Bruno Pedro <bpedro@computer.org>
2. PHP Summer School
Conteúdo
• Conceitos de OOP
• Design Patterns
• Frameworks
• Exercícios
• Resumo
OOP em PHP 2
3. PHP Summer School
Classe
• Descrição de um conjunto de objectos
semelhantes
• Identificador de objectos que partilham os
mesmos atributos sobre os quais podem
ser realizadas as mesmas operações
in Ramos, P., (2006).“Desenhar Bases de Dados com UML”. Edições Sílabo
OOP em PHP 3
4. PHP Summer School
Classe
• Atributos comuns a um grupo de objectos
Porta
tipo de fechadura
altura
cor
largura
estado
tipo de puxador
fonte: http://tinyurl.com/2yp9e7
OOP em PHP 4
5. PHP Summer School
Classe
• Notação UML
nome da classe
Porta
altura
largura
cor
atributos
tipo de fechadura
tipo de puxador
estado
OOP em PHP 5
6. PHP Summer School
Atributos
• Podem ser públicos, privados ou protegidos
• Podem ter valores pré-definidos
Porta
atributo público valor pré-definido
+altura = 200
+largura = 150
+cor = 'azul'
atributo privado -tipo de fechadura
+tipo de puxador
+estado
OOP em PHP 6
7. PHP Summer School
Classe em PHP
início de
script PHP
definição da classe
atributos
fim de
script PHP
OOP em PHP 7
8. PHP Summer School
Classe
• Operações realizáveis por ou sobre um
grupo de objectos
Porta
encosta
abre
fecha bate
tranca destranca
fonte: http://tinyurl.com/2lgamj
OOP em PHP 8
9. PHP Summer School
Classe
• Notação UML
nome da classe
Porta
altura
largura
cor
atributos
tipo de fechadura
tipo de puxador
estado
abre()
fecha()
operações ou métodos
tranca()
destranca()
encosta()
bate()
OOP em PHP 9
10. PHP Summer School
Métodos
• Podem ser públicos, privados ou protegidos
• Podem ter parâmetros e devolver resultados
Porta
altura
largura
cor
tipo de fechadura
tipo de puxador
estado
método público +abre()
+fecha()
+tranca()
método privado parâmetro
-destranca(chave)
+encosta()
+bate()
OOP em PHP 10
11. PHP Summer School
Classe em PHP
nome da classe
atributos
atributo privado
métodos
OOP em PHP 11
12. PHP Summer School
Classe em PHP
métodos
método privado
OOP em PHP 12
13. PHP Summer School
Objecto
• Instanciação da classe
• Define uma entidade com características e
comportamentos próprios
OOP em PHP 13
14. PHP Summer School
Objecto em PHP
definição da classe
instanciação
OOP em PHP 14
15. PHP Summer School
Constructor
• Método especial
• É executado quando o objecto é
instanciado
constructor
OOP em PHP 15
16. PHP Summer School
Constructor (cont.)
parâmetro
de entrada
lógica
gravação
do estado
instanciação
com parâmetro
OOP em PHP 16
17. PHP Summer School
Herança
• Especialização de uma classe de objectos
OOP em PHP 17
18. PHP Summer School
Herança
• Notação UML
Porta
PortaDeCarro PortaDeElevador PortaDeComboio
OOP em PHP 18
19. PHP Summer School
Herança em PHP
classe base
herança
método só disponível
na classe herdada
OOP em PHP 19
20. PHP Summer School
Interface
• Não implementa métodos
• Define métodos que serão utilizados em
implementações
• Obriga classes herdadas a seguirem a
definição
OOP em PHP 20
21. PHP Summer School
Interface em PHP
definição
de interface
implementação
OOP em PHP 21
22. PHP Summer School
Classe abstracta
• Não pode ser instanciada
• Serve para ser herdada por outras classes
• Contém código que poderá ser reutilizado
• Código poderá ser sobreposto pela classe
herdada
OOP em PHP 22
23. PHP Summer School
Classe abstracta em PHP
definição da
classe abstracta
sobreposição
de um método
OOP em PHP 23
24. PHP Summer School
Sobrecarga (Overloading)
• De atributos e métodos
• Executado sempre que um atributo ou
método não existem
• Possibilidade de execução de código
arbitrário
• Possibilidade de criar default methods
OOP em PHP 24
26. PHP Summer School
Sobrecarga de atributos
array de atributos
métodos de
sobrecarga
código de teste
OOP em PHP 26
27. PHP Summer School
Sobrecarga de métodos
mixed __call ( string $name, array $arguments )
método de
sobrecarga
código de teste
OOP em PHP 27
28. PHP Summer School
Associação
Porta Fechadura
• Associa vários objectos
• Permite referenciar objectos a partir de
outros
OOP em PHP 28
29. PHP Summer School
Associação em PHP
classe a ser
associada
associação
OOP em PHP 29
30. PHP Summer School
Iteração
• Percorre todos os atributos públicos de um
objecto
• Utiliza statements básicos de PHP
• Permite alterar o comportamento da
iteração através do Interface Iterator
OOP em PHP 30
31. PHP Summer School
Iteração em PHP
atributos
escreve nome
e valor dos
atributos públicos
OOP em PHP 31
32. PHP Summer School
Design Patterns
• Singleton
• Factory Method
OOP em PHP 32
33. PHP Summer School
Singleton
• Garante que só existe uma única instância
de uma classe
• A instanciação faz-se de um modo diferente
• O objecto instanciado tem todas as
características de um objecto normal
OOP em PHP 33
34. PHP Summer School
Singleton
atributo estático
que guardará o objecto
Porta
...
-instance = null
...
o constructor é privado
-__construct()
+getInstance() : Porta
devolve sempre a mesma
instância do objecto
OOP em PHP 34
35. PHP Summer School
Singleton
atributo estático
que guardará o objecto
o constructor é privado
devolve sempre a mesma
instância do objecto
OOP em PHP 35
36. PHP Summer School
Factory Method
• Gere a instanciação de objectos
• O programador não precisa saber qual a
classe que deve instanciar
• Produz objectos de acordo com
parâmetros de entrada
OOP em PHP 36
37. PHP Summer School
Factory Method
• Notação UML
PortaDeCasa
Porta
devolve PortaDeElevador
instância de +factory()
uma das classes
PortaDeComboio
OOP em PHP 37
38. PHP Summer School
Factory Method
verifica se a classe
existe e devolve
uma instância
OOP em PHP 38
39. PHP Summer School
Frameworks
• Conjuntos de classes
• Oferecem funcionalidades importantes
• autenticação
• acesso a bases de dados
• cache
• Implementam Design Patterns
OOP em PHP 39
41. PHP Summer School
Exercício 1
• Implementação de uma Calculadora
• operações aceitam 2 operandos: (x,y)
• últimos valores (x,y) são guardados em
memória
• últimos valores podem ser obtidos
através de método específico
OOP em PHP 41
42. PHP Summer School
UML
Calculadora
-x
últimos valores utilizados
-y
+soma(x, y)
operações
+multiplica(x, y)
+ultimosValores()
obtenção dos
últimos valores
OOP em PHP 42
44. PHP Summer School
Exercício 2
• Estender a Calculadora
• permitir N operações
• iniciar a calculadora indicando quais as
operações pretendidas
OOP em PHP 44
46. PHP Summer School
Implementação
interface
implementação de
duas operações
OOP em PHP 46
47. PHP Summer School
Implementação
associação a N
operações
instanciação das
operações
instanciação da
(...)
calculadora
OOP em PHP 47
48. PHP Summer School
Implementação
sobrecarga de métodos
invocação da operação
pretendida
OOP em PHP 48
49. PHP Summer School
Resumo
• Classe e Objecto
• Atributos e Métodos
• Herança, interface e classe abstracta
• Sobrecarga, associação e iteração
• Singleton e Factory Method
OOP em PHP 49