OOP (in portuguese)

Post on 05-Dec-2014

10.723 views 2 download

description

Object Oriented Programming in PHP5

Transcript of OOP (in portuguese)

OOP em PHP

Bruno Pedro <bpedro@computer.org>

PHP Summer School - 18 de Julho de 2007

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.