Workshop Orientação a Objetos
Conceitos básicos
e
Exemplo de aplicação no
projeto Sagu

Alexandre Heitor Schmidt
Solis – C...
Sumário


Conceitos básicos de orientação a objetos



Métodos mágicos em PHP



Comparação entre classes em PHP



Co...
Conceitos básicos


Classe vs. Objeto





Classe é a declaração.
Objeto é a instância.

Visibilidade (public/private/...
Conceitos básicos (2)


Constantes


Úteis para configuração da classe






Campos que podem assumir um domínio
espe...
Conceitos básicos (3)


Construtores




Executam quando uma classe é instanciada

Destrutores


Declaração




publ...
Conceitos básicos (4)


Herança


class MinhaClasse extends OutraClasse



Diferença entre private e protected



Form...
Conceitos básicos (5)


Métodos estáticos e não estáticos


Estáticos







Não estáticos




Não existe $this->...
Métodos mágicos em PHP


Principais para nossa realidade


Construtores/destrutores





Getters e Setters






...
Comparação entre classes em PHP


Operador ”==”


TRUE quando os valores dos atributos são iguais.




Nota: '01' = 1
...
Convenções da Solis


Coding standards



Cada classe em um arquivo


Arquivo deve conter apenas a definição da classe,...
Diagramação UML – Diagrama de Classes
Diagramação UML – Diagrama de Classes (2)
Diagramação UML – Diagrama de Classes (3)
Diagramação UML – Diagrama de Classes (4)
Diagramação UML – Diagrama de Classes (5)
Diagramação UML – Diagrama de Classes (6)
Diagramação UML – Diagrama de Classes (7)
Diagramação UML – Diagrama de Classes (8)
Diagramação UML – Diagrama de Classes (9)
Diagramação UML – Diagrama de Classes (10)
Diagramação UML – Diagrama de Classes (11)
Mapeamento Objeto-Relacional
Mapeamento Objeto-Relacional (1)
Criação dos ids com
nomes intuitivos.
Cada id vira um atributo
da classe.
Mapeamento Objeto-Relacional (2)
Mapeamento Objeto-Relacional (3)



Alguns ajustes geralmente são necessários
para que o ER corresponda ao diagrama de
cl...
Types do Sagu – Histórico


Arquivo types.class


Apenas declaravam classes com atributos,
geralmente sem métodos.



...
Types do Sagu – Histórico (2)


SDatabase




SForm e derivados




Facilitou a utilização de transações.
Facilitou a...
Types do Sagu – Vantagens


Facilidade de uso




Diminuição da necessidade de repetição de código

Programação em cama...
Types do Sagu – Desvantagens


Can't think of any! ;-)
Construtor
Método de carga do objeto
Método de busca

Iterações
perigosas.

Problemas de
performance
Busca específica para grid
Métodos de
busca ficam
na classe por
conveniência.
Método único para salvar
Usuário da classe não
precisa se preocupar se
está inserindo um novo
registro ou atualizando um
r...
Método privado para inserção
Método privado para atualização
Métodos auxiliares
Problemas comuns


Performance






Problema dos processos seletivos do cliente
FAMETRO.
Já contornado com a carga so...
Referências


Manual do PHP




http://www.php.net/manual/pt_BR/language.oop5.php

Projeto Sagu


http://www.solis.coo...
Fim!
Obrigado!
Alexandre Heitor Schmidt
Solis – 2011
alexsmith@solis.coop.br
alexandre.schmidt@gmail.com
Upcoming SlideShare
Loading in...5
×

Object Oriented Programming

190

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
190
On Slideshare
0
From Embeds
0
Number of Embeds
0
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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×