Object Oriented Programming

448 views

Published on

This presentation is in pt_BR (Brazilian Portuguese) language and aims to clear up some concepts of object-oriented programming.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
448
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Object Oriented Programming

  1. 1. Workshop Orientação a Objetos Conceitos básicos e Exemplo de aplicação no projeto Sagu Alexandre Heitor Schmidt Solis – Cooperativa de Soluções Livres – 2011
  2. 2. Sumário  Conceitos básicos de orientação a objetos  Métodos mágicos em PHP  Comparação entre classes em PHP  Convenções da Solis  Diagramação UML – Diagrama de classes  Mapeamento Objeto-Relacional (ORM)  Types do Sagu
  3. 3. Conceitos básicos  Classe vs. Objeto    Classe é a declaração. Objeto é a instância. Visibilidade (public/private/protected)    Para atributos, ”var” = ”public” Para métodos, ”” = ”public” Classes e métodos abstratos  Podem possuir implementação ou não  Podem ser sobrescritos  Classes abstratas não podem ser instanciadas  Exemplo: sab
  4. 4. Conceitos básicos (2)  Constantes  Úteis para configuração da classe    Campos que podem assumir um domínio específico de valores. Minimizam uso de hard-code. Construtores  Declaração   public function MinhaClasse public function __construct
  5. 5. Conceitos básicos (3)  Construtores   Executam quando uma classe é instanciada Destrutores  Declaração   public function __destruct() Executam quando não há mais referências à instância.  Chamadas a exit() também executam destrutores.
  6. 6. Conceitos básicos (4)  Herança  class MinhaClasse extends OutraClasse  Diferença entre private e protected  Forma como o Miolo explora herança  Chamada de métodos da classe filha a partir da classe pai  $this->createFields() no MForm chama método createFields() do formulário que estende o MForm.
  7. 7. Conceitos básicos (5)  Métodos estáticos e não estáticos  Estáticos      Não estáticos   Não existe $this->. Usa-se ”self::” Útil para bibliotecas de funções, ajax, sessão... Exemplo: SAGU::getParameter() Uso de parent:: para chamar o método estático da classe pai. Uso como objeto normal, com atributos, $this, etc. Classes podem ter métodos estáticos e não estáticos.  MSubdetail
  8. 8. Métodos mágicos em PHP  Principais para nossa realidade  Construtores/destrutores    Getters e Setters     void __construct ([ mixed $args [, $... ]] ) void __destruct ( void ) void __set ( string $name , mixed $value ) mixed __get ( string $name ) Quebra do conceito de visibilidade. Referência completa  http://www.php.net/manual/en/language.oop5.magic.php
  9. 9. Comparação entre classes em PHP  Operador ”==”  TRUE quando os valores dos atributos são iguais.   Nota: '01' = 1 Operador ”===”   TRUE quando os dois operandos se referem a uma mesma instância. Exemplo: <?php class MinhaClasse {} $x = new MinhaClasse(); $y = new MinhaClasse(); echo 'x e y são ' . (($x === $y) ? 'iguais' : 'diferentes') . ”n”; ?>
  10. 10. Convenções da Solis  Coding standards  Cada classe em um arquivo  Arquivo deve conter apenas a definição da classe, sem mais funções ou outras declarações.
  11. 11. Diagramação UML – Diagrama de Classes
  12. 12. Diagramação UML – Diagrama de Classes (2)
  13. 13. Diagramação UML – Diagrama de Classes (3)
  14. 14. Diagramação UML – Diagrama de Classes (4)
  15. 15. Diagramação UML – Diagrama de Classes (5)
  16. 16. Diagramação UML – Diagrama de Classes (6)
  17. 17. Diagramação UML – Diagrama de Classes (7)
  18. 18. Diagramação UML – Diagrama de Classes (8)
  19. 19. Diagramação UML – Diagrama de Classes (9)
  20. 20. Diagramação UML – Diagrama de Classes (10)
  21. 21. Diagramação UML – Diagrama de Classes (11)
  22. 22. Mapeamento Objeto-Relacional
  23. 23. Mapeamento Objeto-Relacional (1) Criação dos ids com nomes intuitivos. Cada id vira um atributo da classe.
  24. 24. Mapeamento Objeto-Relacional (2)
  25. 25. Mapeamento Objeto-Relacional (3)  Alguns ajustes geralmente são necessários para que o ER corresponda ao diagrama de classes da forma como o analista deseja.  Campos ”not null”, tamanho de campos varchar, chaves estrangeiras simples e compostas, etc.
  26. 26. Types do Sagu – Histórico  Arquivo types.class  Apenas declaravam classes com atributos, geralmente sem métodos.    Concentravam várias classes num único arquivo. Utilização precária dos conceitos de OO. Diretório db (business) do Miolo   Classes viraram repositórios de funções. Regras de negócio ficavam parte na classe, parte no próprio formulário.
  27. 27. Types do Sagu – Histórico (2)  SDatabase   SForm e derivados   Facilitou a utilização de transações. Facilitou a criação de interfaces. SType  Facilitou a comunicação da aplicação com o BD.
  28. 28. Types do Sagu – Vantagens  Facilidade de uso   Diminuição da necessidade de repetição de código Programação em camadas  Encapsulamento da comunicação com o BD  Isolamento as regras de negócio  Reutilização de código  Programação orientada a objetos* * Métodos mágicos e iterações em objetos para extração de valores ferem de certa forma o conceito, mas oferecem produtividade(?).
  29. 29. Types do Sagu – Desvantagens  Can't think of any! ;-)
  30. 30. Construtor
  31. 31. Método de carga do objeto
  32. 32. Método de busca Iterações perigosas. Problemas de performance
  33. 33. Busca específica para grid Métodos de busca ficam na classe por conveniência.
  34. 34. Método único para salvar Usuário da classe não precisa se preocupar se está inserindo um novo registro ou atualizando um registro existente.
  35. 35. Método privado para inserção
  36. 36. Método privado para atualização
  37. 37. Métodos auxiliares
  38. 38. Problemas comuns  Performance    Problema dos processos seletivos do cliente FAMETRO. Já contornado com a carga sob demanda. Regras de negócio fora da classe  Vem sendo trabalhado.
  39. 39. Referências  Manual do PHP   http://www.php.net/manual/pt_BR/language.oop5.php Projeto Sagu  http://www.solis.coop.br/sagu
  40. 40. Fim! Obrigado! Alexandre Heitor Schmidt Solis – 2011 alexsmith@solis.coop.br alexandre.schmidt@gmail.com

×