OOP (in portuguese)

8.498 visualizações

Publicada em

Object Oriented Programming in PHP5

Publicada em: Tecnologia

OOP (in portuguese)

  1. 1. OOP em PHP PHP Summer School - 18 de Julho de 2007 Bruno Pedro <bpedro@computer.org>
  2. 2. PHP Summer School Conteúdo • Conceitos de OOP • Design Patterns • Frameworks • Exercícios • Resumo OOP em PHP 2
  3. 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. 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. 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. 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. 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. 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. 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. 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. 11. PHP Summer School Classe em PHP nome da classe atributos atributo privado métodos OOP em PHP 11
  12. 12. PHP Summer School Classe em PHP métodos método privado OOP em PHP 12
  13. 13. PHP Summer School Objecto • Instanciação da classe • Define uma entidade com características e comportamentos próprios OOP em PHP 13
  14. 14. PHP Summer School Objecto em PHP definição da classe instanciação OOP em PHP 14
  15. 15. PHP Summer School Constructor • Método especial • É executado quando o objecto é instanciado constructor OOP em PHP 15
  16. 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. 17. PHP Summer School Herança • Especialização de uma classe de objectos OOP em PHP 17
  18. 18. PHP Summer School Herança • Notação UML Porta PortaDeCarro PortaDeElevador PortaDeComboio OOP em PHP 18
  19. 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. 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. 21. PHP Summer School Interface em PHP definição de interface implementação OOP em PHP 21
  22. 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. 23. PHP Summer School Classe abstracta em PHP definição da classe abstracta sobreposição de um método OOP em PHP 23
  24. 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. 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. 26. PHP Summer School Sobrecarga de atributos array de atributos métodos de sobrecarga código de teste OOP em PHP 26
  27. 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. 28. PHP Summer School Associação Porta Fechadura • Associa vários objectos • Permite referenciar objectos a partir de outros OOP em PHP 28
  29. 29. PHP Summer School Associação em PHP classe a ser associada associação OOP em PHP 29
  30. 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. 31. PHP Summer School Iteração em PHP atributos escreve nome e valor dos atributos públicos OOP em PHP 31
  32. 32. PHP Summer School Design Patterns • Singleton • Factory Method OOP em PHP 32
  33. 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. 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. 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. 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. 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. 38. PHP Summer School Factory Method verifica se a classe existe e devolve uma instância OOP em PHP 38
  39. 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. 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. 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. 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. 43. PHP Summer School Implementação OOP em PHP 43
  44. 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. 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. 46. PHP Summer School Implementação interface implementação de duas operações OOP em PHP 46
  47. 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. 48. PHP Summer School Implementação sobrecarga de métodos invocação da operação pretendida OOP em PHP 48
  49. 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. 50. PHP Summer School Questões? OOP em PHP 50
  51. 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

×