SlideShare una empresa de Scribd logo
1 de 51
Descargar para leer sin conexión
OOP em PHP
PHP Summer School - 18 de Julho de 2007
      Bruno Pedro <bpedro@computer.org>
PHP Summer School




                    Conteúdo
 • Conceitos de OOP
 • Design Patterns
 • Frameworks
 • Exercícios
 • Resumo
OOP em PHP             2
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
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
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
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
PHP Summer School




             Classe em PHP
                         início de
                        script PHP

                        definição da classe


                        atributos




                          fim de
                        script PHP
OOP em PHP          7
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
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
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
PHP Summer School




             Classe em PHP
                         nome da classe

                         atributos


                          atributo privado


                         métodos



OOP em PHP          11
PHP Summer School




             Classe em PHP

                         métodos



                         método privado




OOP em PHP          12
PHP Summer School




                    Objecto
 • Instanciação da classe
 • Define uma entidade com características e
     comportamentos próprios




OOP em PHP             13
PHP Summer School




             Objecto em PHP

                         definição da classe




                         instanciação




OOP em PHP          14
PHP Summer School




                Constructor
 • Método especial
 • É executado quando o objecto é
     instanciado



                                constructor




OOP em PHP           15
PHP Summer School




        Constructor (cont.)

                           parâmetro
                           de entrada


                           lógica

                           gravação
                          do estado

                           instanciação
                         com parâmetro

OOP em PHP          16
PHP Summer School




                    Herança
 • Especialização de uma classe de objectos




OOP em PHP             17
PHP Summer School




                        Herança
 • Notação UML
                              Porta




         PortaDeCarro    PortaDeElevador   PortaDeComboio




OOP em PHP                     18
PHP Summer School




             Herança em PHP
                         classe base



                         herança

                         método só disponível
                          na classe herdada




OOP em PHP          19
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
PHP Summer School




         Interface em PHP
                          definição
                         de interface


                         implementação




OOP em PHP          21
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
PHP Summer School




Classe abstracta em PHP
                           definição da
                         classe abstracta




                           sobreposição
                          de um método



OOP em PHP          23
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
PHP Summer School




Sobrecarga de atributos

   void __set ( string $name, mixed $value )
   mixed __get ( string $name )
   bool __isset ( string $name )
   void __unset ( string $name )


OOP em PHP             25
PHP Summer School




 Sobrecarga de atributos
                         array de atributos



                         métodos de
                         sobrecarga




                          código de teste

OOP em PHP          26
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
PHP Summer School




                Associação
              Porta          Fechadura




 • Associa vários objectos
 • Permite referenciar objectos a partir de
     outros


OOP em PHP            28
PHP Summer School




     Associação em PHP
                         classe a ser
                          associada




                         associação




OOP em PHP          29
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
PHP Summer School




             Iteração em PHP

                           atributos




                           escreve nome
                             e valor dos
                         atributos públicos



OOP em PHP          31
PHP Summer School




             Design Patterns


 • Singleton
 • Factory Method


OOP em PHP          32
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
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
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
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
PHP Summer School




                 Factory Method
     • Notação UML
                                           PortaDeCasa



                             Porta
   devolve                                PortaDeElevador
 instância de           +factory()
uma das classes
                                          PortaDeComboio




    OOP em PHP                       37
PHP Summer School




             Factory Method

                         verifica se a classe
                          existe e devolve
                           uma instância




OOP em PHP          38
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
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/




OOP em PHP                40
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
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
PHP Summer School




             Implementação




OOP em PHP          43
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
PHP Summer School




                                    UML
                                                            Calculadora
                  <<interface>>
                                                  0..1 -x
                  Operacao            *
                                                      -y
                                                      +gravaValores(x, y)
              +calcula(x, y)
                                                      +ultimosValores()




      Soma                        Multiplicacao

+calcula(x, y)              +calcula(x, y)



 OOP em PHP                               45
PHP Summer School




             Implementação
                         interface




                                     implementação de
                                      duas operações




OOP em PHP          46
PHP Summer School




             Implementação
                            associação a N
                              operações



                                       instanciação das
                                          operações


                                instanciação da
               (...)
                                  calculadora




OOP em PHP             47
PHP Summer School




             Implementação
                    sobrecarga de métodos




                                invocação da operação
                                      pretendida



OOP em PHP                48
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
PHP Summer School




                    Questões?




OOP em PHP              50
PHP Summer School




             Mais informação
 • 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.

OOP em PHP             51

Más contenido relacionado

La actualidad más candente

Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalGustavo Coutinho
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Luis Ferreira
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptRogério Moraes de Carvalho
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOMicrosoft
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemliverig
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...George Mendonça
 

La actualidad más candente (20)

Introducao ao C#
Introducao ao C#Introducao ao C#
Introducao ao C#
 
Curso ruby on rails
Curso ruby on railsCurso ruby on rails
Curso ruby on rails
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Apresentação faef
Apresentação faefApresentação faef
Apresentação faef
 
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e FuncionalParadigmas de Programação - Imperativo, Orientado a Objetos e Funcional
Paradigmas de Programação - Imperativo, Orientado a Objetos e Funcional
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Aula2
Aula2Aula2
Aula2
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScriptTDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
TDC 2011 Goiânia: Evolução da linguagem de programação JavaScript
 
Guia rapido java v2
Guia rapido java v2Guia rapido java v2
Guia rapido java v2
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
JAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagemJAVA: Muito mais que uma linguagem
JAVA: Muito mais que uma linguagem
 
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
Python - Orientação a Objetos com UML no Batismo Digital 3.0 da Faculdade JK ...
 

Destacado (7)

SOLID Principies
SOLID PrincipiesSOLID Principies
SOLID Principies
 
Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)Php data structures – beyond spl (online version)
Php data structures – beyond spl (online version)
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Capítulo 5 aceitação e renúncia da herança
Capítulo 5   aceitação e renúncia da herançaCapítulo 5   aceitação e renúncia da herança
Capítulo 5 aceitação e renúncia da herança
 
Certificacao Php
Certificacao PhpCertificacao Php
Certificacao Php
 
Herança - Jozyanne
Herança - JozyanneHerança - Jozyanne
Herança - Jozyanne
 

Similar a OOP (in portuguese)

Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)George Mendonça
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)Bruno Pedro
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01joaocarlobarros
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Webdiogoa21
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHPAugusto das Neves
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPiMasters
 
Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Thyago Maia
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPRaphael Almeida
 
Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos phpsecomp2011
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHPJuan Maiz
 

Similar a OOP (in portuguese) (20)

Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
Uma Abordagem Prática de Orientação a Objetos com PHP (FLISOL DF 2011)
 
OOP (in portuguese)
OOP (in portuguese)OOP (in portuguese)
OOP (in portuguese)
 
Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01Serversidephp pptx2-120418140114-phpapp01
Serversidephp pptx2-120418140114-phpapp01
 
M5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-WebM5-Desenvolvimento-Paginas-Web
M5-Desenvolvimento-Paginas-Web
 
Desenvolvimento web e PHP
Desenvolvimento web e PHPDesenvolvimento web e PHP
Desenvolvimento web e PHP
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Solid
SolidSolid
Solid
 
5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP5 Maneiras de melhorar seu código PHP
5 Maneiras de melhorar seu código PHP
 
PHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHPPHP-CLI in 7 steps - 7Masters PHP
PHP-CLI in 7 steps - 7Masters PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Módulo de php
Módulo de phpMódulo de php
Módulo de php
 
Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2Fundamentos da Programação PHP OO - Aula 2
Fundamentos da Programação PHP OO - Aula 2
 
Prepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHPPrepare-se para o próximo estágio da evolução PHP
Prepare-se para o próximo estágio da evolução PHP
 
Webinar php extreme 5.3
Webinar php extreme 5.3Webinar php extreme 5.3
Webinar php extreme 5.3
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Orientação a objetos php
Orientação a objetos   phpOrientação a objetos   php
Orientação a objetos php
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHP
 

Más de Bruno Pedro

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIsBruno Pedro
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an APIBruno Pedro
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an APIBruno Pedro
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an APIBruno Pedro
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to ChatBruno Pedro
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejsBruno Pedro
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API DiscoveryBruno Pedro
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris SubwayBruno Pedro
 
The importance of /me
The importance of /meThe importance of /me
The importance of /meBruno Pedro
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumersBruno Pedro
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBruno Pedro
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?Bruno Pedro
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?Bruno Pedro
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classificationBruno Pedro
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demoBruno Pedro
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuthBruno Pedro
 

Más de Bruno Pedro (20)

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIs
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an API
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an API
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an API
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to Chat
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API Discovery
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris Subway
 
The importance of /me
The importance of /meThe importance of /me
The importance of /me
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumers
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and Customers
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?
 
node-fs
node-fsnode-fs
node-fs
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classification
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demo
 
OAuth checklist
OAuth checklistOAuth checklist
OAuth checklist
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuth
 

OOP (in portuguese)

  • 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
  • 25. PHP Summer School Sobrecarga de atributos void __set ( string $name, mixed $value ) mixed __get ( string $name ) bool __isset ( string $name ) void __unset ( string $name ) OOP em PHP 25
  • 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
  • 40. 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/ OOP em PHP 40
  • 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
  • 43. PHP Summer School Implementação OOP em PHP 43
  • 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
  • 45. PHP Summer School UML Calculadora <<interface>> 0..1 -x Operacao * -y +gravaValores(x, y) +calcula(x, y) +ultimosValores() Soma Multiplicacao +calcula(x, y) +calcula(x, y) OOP em PHP 45
  • 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
  • 50. PHP Summer School Questões? OOP em PHP 50
  • 51. PHP Summer School Mais informação • 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. OOP em PHP 51