Download - OOP (in portuguese)
OOP em PHP
PHP Summer School
Conteúdo
• Conceitos de OOP
• Design Patterns
• Frameworks
• Exercícios
• Resumo
2
OOP em PHP
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
3
in Ramos, P., (2006).“Desenhar Bases de Dados com UML”. Edições Sílabo
OOP em PHP
PHP Summer School
Classe• Atributos comuns a um grupo de objectos
4
Porta
fonte: http://tinyurl.com/2yp9e7
altura
largura cor
tipo de fechadura
tipo de puxadorestado
OOP em PHP
PHP Summer School
Classe
5
altura
largura
cor
tipo de fechadura
tipo de puxador
estado
Porta nome da classe
atributos
• Notação UML
OOP em PHP
PHP Summer School
Atributos• Podem ser públicos, privados ou protegidos
• Podem ter valores pré-definidos
6
+altura = 200
+largura = 150
+cor = 'azul'
-tipo de fechadura
+tipo de puxador
+estado
Porta
atributo público
atributo privado
valor pré-definido
OOP em PHP
PHP Summer School
Classe em PHP
7
início descript PHP
fim descript PHP
definição da classe
atributos
OOP em PHP
PHP Summer School
Classe• Operações realizáveis por ou sobre um
grupo de objectos
8
Porta
fonte: http://tinyurl.com/2lgamj
abre
fecha
tranca
encosta
bate
destranca
OOP em PHP
PHP Summer School
Classe• Notação UML
9
nome da classe
atributos
abre()
fecha()
tranca()
destranca()
encosta()
bate()
altura
largura
cor
tipo de fechadura
tipo de puxador
estado
Porta
operações ou métodos
OOP em PHP
PHP Summer School
Métodos• Podem ser públicos, privados ou protegidos
• Podem ter parâmetros e devolver resultados
10
+abre()
+fecha()
+tranca()
-destranca(chave)
+encosta()
+bate()
altura
largura
cor
tipo de fechadura
tipo de puxador
estado
Porta
método público
método privado parâmetro
OOP em PHP
PHP Summer School
Classe em PHP
11
nome da classe
atributos
métodos
atributo privado
OOP em PHP
PHP Summer School
Classe em PHP
12
métodos
método privado
OOP em PHP
PHP Summer School
Objecto• Instanciação da classe
• Define uma entidade com características e comportamentos próprios
13
OOP em PHP
PHP Summer School
Objecto em PHP
14
definição da classe
instanciação
OOP em PHP
PHP Summer School
Constructor
15
• Método especial
• É executado quando o objecto é instanciado
constructor
OOP em PHP
PHP Summer School
Constructor (cont.)
16
parâmetrode entrada
lógica
gravaçãodo estado
instanciaçãocom parâmetro
OOP em PHP
PHP Summer School
Herança• Especialização de uma classe de objectos
17
OOP em PHP
PHP Summer School
Herança• Notação UML
18
PortaDeComboioPortaDeElevadorPortaDeCarro
Porta
OOP em PHP
PHP Summer School
Herança em PHP
19
classe base
herança
método só disponívelna classe herdada
OOP em PHP
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
20
OOP em PHP
PHP Summer School
Interface em PHP
21
definiçãode interface
implementação
OOP em PHP
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
22
OOP em PHP
PHP Summer School
Classe abstracta em PHP
23
definição daclasse abstracta
sobreposiçãode um método
OOP em PHP
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
24
OOP em PHP
PHP Summer School
Sobrecarga de atributos
void __set ( string $name, mixed $value )
mixed __get ( string $name )
bool __isset ( string $name )
void __unset ( string $name )
25
OOP em PHP
PHP Summer School
Sobrecarga de atributos
26
array de atributos
métodos desobrecarga
código de teste
OOP em PHP
PHP Summer School
Sobrecarga de métodosmixed __call ( string $name, array $arguments )
27
método desobrecarga
código de teste
OOP em PHP
PHP Summer School
Associação
• Associa vários objectos
• Permite referenciar objectos a partir de outros
28
FechaduraPorta
OOP em PHP
PHP Summer School
Associação em PHP
29
classe a serassociada
associação
OOP em PHP
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
30
OOP em PHP
PHP Summer School
Iteração em PHP
31
atributos
escreve nomee valor dos
atributos públicos
OOP em PHP
PHP Summer School
Design Patterns
• Singleton
• Factory Method
32
OOP em PHP
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
33
OOP em PHP
PHP Summer School
Singleton
34
...
-__construct()
+getInstance() : Porta
...
-instance = null
Porta
atributo estáticoque guardará o objecto
o constructor é privado
devolve sempre a mesmainstância do objecto
OOP em PHP
PHP Summer School
Singleton
35
atributo estáticoque guardará o objecto
o constructor é privado
devolve sempre a mesmainstância do objecto
OOP em PHP
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
36
OOP em PHP
PHP Summer School
Factory Method• Notação UML
37
devolveinstância de
uma das classes
PortaDeCasa
PortaDeElevador
PortaDeComboio
+factory()
Porta
OOP em PHP
PHP Summer School
Factory Method
38
verifica se a classeexiste e devolveuma instância
OOP em PHP
PHP Summer School
Frameworks
39
• Conjuntos de classes
• Oferecem funcionalidades importantes
• autenticação
• acesso a bases de dados
• cache
• Implementam Design Patterns
OOP em PHP
PHP Summer School
Frameworks• PEAR - http://pear.php.net/
• Zend Framework - http://framework.zend.com/
• Symfony - http://www.symfony-project.com/
• CakePHP - http://www.cakephp.org/
40
OOP em PHP
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
41
OOP em PHP
PHP Summer School
UML
42
+soma(x, y)
+multiplica(x, y)
+ultimosValores()
-x
-y
Calculadora
últimos valores utilizados
operações
obtenção dosúltimos valores
OOP em PHP
PHP Summer School
Implementação
43
OOP em PHP
PHP Summer School
Exercício 2
• Estender a Calculadora
• permitir N operações
• iniciar a calculadora indicando quais as operações pretendidas
44
OOP em PHP
PHP Summer School
UML
45
+gravaValores(x, y)
+ultimosValores()
-x
-y
Calculadora
+calcula(x, y)
<<interface>>
Operacao
+calcula(x, y)
Soma
+calcula(x, y)
Multiplicacao
0..1*
OOP em PHP
PHP Summer School
Implementação
46
interface
implementação deduas operações
OOP em PHP
PHP Summer School
Implementação
47
associação a Noperações
instanciação dasoperações
instanciação dacalculadora
(...)
OOP em PHP
PHP Summer School
Implementação
48
sobrecarga de métodos
invocação da operaçãopretendida
OOP em PHP
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
49
OOP em PHP
PHP Summer School
Questões?
50
OOP em PHP
PHP Summer School
Mais informação
51
• O meu blog: http://unfoldingtheweb.com/
• PHP Manual: http://www.php.net/
• UML: http://tinyurl.com/yohpad
• Gamma, E., (1995). Design Patterns. Boston: Addison-Wesley.