Objetos, Padrões e Prática

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    7 Favorites

    Objetos, Padrões e Prática - Presentation Transcript

    1. Objetos, Padrões e Prática Anderson “Duodraco” Casimiro PHP Conference '08
    2. Conteúdo
      • Objetos e o PHP 5
      • Introdução a Design Patterns
      • Os principais padrões
      • Exemplo: Framework MVC
      • Conclusões
    3. “ O mundo é orientado a objetos” Eu e com certeza um monte de gente por aí
    4. Orientação a Objetos?
      • Base da arquitetura de software moderna
      • Tornar problemas e unidades do mundo real em entidades computacionais
      • Melhor compreensão do software por equipes de análise e de desenvolvimento
      • Melhor definição da informação
      • Tudo é objeto!
        • Alguém duvida?
    5. E no PHP5 ?
      • OO Melhorada
        • visibilidade, interfaces, constantes, etc
      • Métodos Mágicos
        • __get, __set, __construct, __destruct, __call, …
        • __autoload
        • __clone
      • SPL – Standard PHP Library
        • Iterators, Heap e Stack,Observer ...
    6. Definições
      • Classes, Objetos e Interfaces
      • Métodos, Atributos e Constantes
      • Visibilidade: Public, Protected e Private
      • Static, Final, Abstract
      • Hierarquia
      • Sobrecarga e Polimorfismo
    7. Classe
      • O que é um Canis Familiaris ?
        • Mamífero, Canino
          • Atributos?
          • Ações?
      • Class Cachorro { }
    8. Objeto
        - cor: “Branco” - raca: “T.B” - nome: “Max” - peso: 13 - idade: 4 +dormir($joke=false) +comer() +brincar() + …
    9. Interface
      • Definição de tipo
      • Definição de funcionalidade
        • Não faz aplicação
        • Somente declara assinaturas de métodos (PHP)
        • Classes devem implementar os métodos
    10. Métodos, Atributos e Constantes
      • Constantes – intocáveis
        • const CONSTANTE = 1;
      • Atributos – substantivos / adjetivos
        • $atributo = “teste”;
      • Métodos – verbos
        • function metodo(Cachorro $cao, $bravo = false)
    11. Visibilidade
      • Public
        • Visível de qualquer lugar
      • Protected
        • Visível somente dentro da hierarquia
      • Private
        • Visível somente na classe
    12. Static
      • Acesso sem instância
      • Atributos
        • Somente valores escalares
      • Métodos
        • Em métodos estáticos não existe $this
        • Use self e parent
          • self::$atributo, self::CONSTANTE, self::metodo()
    13. Abstract e Final
      • Abstract
        • Esta classe não pode ser instanciada
      • Final
        • Esta classe não pode ser estendida
        • Este método/atributo não pode ser redeclarado
          • polimorfismo
    14. Herança
      • extends
      • Filhos possuem todos os membros protected e public da classe Mãe
      • Semântica
        • Regra “<x> é um <y>”
    15. Sobrecarga e Polimorfismo
      • Polimorfismo: especializar um método em uma classe filha
      • Sobrecarga
        • Utilizar a mesma chamada de método para ações distintas
        • Não nativo do PHP
        • __call
    16. Design Patterns
      • O que é isso?
      • Onde isso vai me ajudar?
      • Bonito, mas isso se aplica no dia-a-dia?
      • Dá pra usar no PHP?
      • Acabaram-se os meus problemas?
    17. O que é isso?
      • Padrões de Projeto
      • Relação de soluções para problemas comuns
      • Termo nasceu na arquitetura (civil)
      • Ganhou espaço na programação com a publicação de Design Patterns: Elements of Reusable Object-Oriented Software
        • Gang of Four
      • NÃO é febre, NÃO é modinha
      • NÃO vai salvar sua vida naquele projeto que você tem que entregar na próxima segunda
    18. Por que usar?
      • Define um problema
      • Define uma solução
      • Independente de linguagem
      • Definem um vocabulário
      • São Experimentados e Testados
      • São Projetados para Colaboração
      • Promovem um bom projeto
    19. “ Cada Padrão descreve um problema que ocorre várias vezes em nosso ambiente e, então, descreve o núcleo da solução para este problema, de forma que você possa usar essa solução um milhão de vezes sem fazê-lo da mesma forma duas vezes” Christopher Alexander
    20. Tipos de Patterns
      • Criacionais
        • Singleton, Factory, Prototype
      • Estruturais
        • Composite, Decorator, Facade
      • Comportamentais
        • Strategy, Observer, Visitor
      • Corporativos
        • Registry, *Controller, Domain Model, Unit of Work
          • * = [Front | Application | Page]
    21. Singleton
      • Garantir que uma só instancia seja gerada
      • Utiliza-se de um atributo static private
      • Exemplos de uso
        • Log
        • Conexão com BD
    22. Singleton
    23. Factory Method
      • Expõe um método para a criação de objetos
        • Permite às subclasses controlarem o processo
        • Retorno de uma Interface Específica
      • Exemplos
        • Envio de Email (Plain / HTML)
        • Produtos
    24. Factory Method
    25. Prototype
      • Cria objetos a partir de um “template”
      • Usar quando o “new” for muito custoso
      • Uso de clone
        • clone $obj;
      • Uso
        • Utilização de cópias de objetos grandes
        • Processamento com objetos parecidos
    26. Prototype
    27. Composite
      • Facilita a criação e gestão de hierarquias
        • Objetos independentes
        • Conjuntos de objetos aninhados
      • Objetos e Composições de Objetos
        • Tratados igualmente
      • Exemplo
        • Carrinho de compras
          • Grupos de produtos
    28. Composite
    29. Decorator
      • Permite a seleção dinâmica de objetos
        • Modifica as responsabilidades e comportamentos
      • Exemplo
        • Mensagens em processos
          • Requisição
            • Autenticação
            • Carregamento
            • Log
            • Conexão
    30. Decorator
    31. Facade
      • Entrega uma interface simples para um sistema complexo
      • Abstração de subsistemas
      • Exemplo
        • Script procedural de busca em itens.txt
          • Funções espalhadas para várias tarefas
        • Classe ProductFacade
          • Interface para conseguir um produto
          • ItemFacade::getInstance('itens.txt')->getItem(2);
    32. Facade
    33. Strategy
      • Define um conjunto de algorítimos encapsulados
        • O objetivo é alcançar um comportamento específico
      • Usado quando
        • Algumas versões / variações de uma operação se fazem necessárias
        • O acesso ao algorítimo não deve ser exposto
    34. Strategy
    35. Observer
      • Permite que um ou mais objetos sejam notificados de alterações em outros objetos
      • Usado quando
        • Mudanças de estado devem disparar ações
        • A notificação de estado deve ser “global”
      • Exemplo
        • Log global e/ou condicional
    36. Observer
    37. Visitor
      • Permite que uma ou mais operações sejam aplicadas a um conjunto de objetos
        • Desacopladas da estrutura
      • Usar quando
        • A estrutura não pode mudar, mas as operações sim
        • Expor o estado interno é aceitável
      • Exemplo
        • Cálculo de impostos de regiões diferentes
    38. Visitor
    39. Iterator
      • Permite o acesso a elementos de umobjeto composto
        • Objetos com coleções agregadas
      • A SPL implementa esta interface
        • Para o PHP o Iterator é tratado como objeto e array
          • Podendo ser usado em funções de array e foreach
    40. Iterator
    41. MVC
      • Model
        • Responsável pela lógica de negócio
        • Informação
      • View
        • Apresentação
      • Controller
        • Decisisão
    42. MVC
    43. Registry
      • Usado para prover dados comuns a todo um sistema
      • Usado para substituir o uso de variáveis globais
        • Também para manter uniforme a informação entre sessões e instâncias de aplicação
    44. Registry
    45. Domain Model & Data Mapper
      • Domain Model
        • Gerencia objetos participantes da camada de negócio
      • Data Mapper
        • Classe especialista para gerir o tramite de Banco de Dados para as Domain Model
    46. Command
      • Encapsula uma requisição de modo a tratá-la como objeto
        • Isto permite que a requisição seja manipulada nos relacionamentos de objetos
        • Enfileiramento
        • Callbacks
    47. Command
    48. FrontController
      • Define um ponto único de entrada
      • Processa a requisição
        • Seleciona a ação a ser tomada
      • Cria um Controller ou um Command
        • Estes executam de fato a requisição
    49. FrontController
    50. ***Office
      • Derivação de FrontController
        • Daniel Oosterhuis
      • Faz a seleção de protocolo
      • Obtem os parâmetros de requisição
      • Aí continua como um FrontController clássico
    51. ***Office
    52. <<FAKE>> Framework
      • Sistema de configuração
      • Separação de camadas
      • Log de operações
      • Boa Estrutura
      • Fácil de Manter
    53. <<FAKE>> Framework
      • Singleton
      • Registry
      • Factory
      • FrontController
    54. Perguntas ???
    55. Referências
      • Entendendo e Dominando o PHP
        • PHP5 Objects, Patterns, Pratice
        • Matt Zandstra
      • Design Patterns – Reference Card
        • Jason McDonald
        • refcardz.com
        • Zend Certified Engineer – PHP5
        • duodraco.com
        • ophpen.org
        • Desenvolvedor há 6 anos
          • PHP, CF, JS,MySQL, Postgre, SQLServer, DB2, Oracle
          • Hospitalar, RH, Comércio, Trânsito
          • Atualmente na Burti
        • Contato
          • [email_address]
          • anderson@ophpen.org

    + Anderson CasimiroAnderson Casimiro, 11 months ago

    custom

    763 views, 7 favs, 5 embeds more stats

    Palestra apresentada na PHP Conference Brasil '08. more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 763
      • 746 on SlideShare
      • 17 from embeds
    • Comments 0
    • Favorites 7
    • Downloads 0
    Most viewed embeds
    • 11 views on http://duodraco.wordpress.com
    • 2 views on http://duodraco
    • 2 views on http://duodraco.com
    • 1 views on http://ophpen.org
    • 1 views on http://www.ophpen.org

    more

    All embeds
    • 11 views on http://duodraco.wordpress.com
    • 2 views on http://duodraco
    • 2 views on http://duodraco.com
    • 1 views on http://ophpen.org
    • 1 views on http://www.ophpen.org

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories