object oriented programming

Download Object Oriented Programming

If you can't read please download the document

Upload: alexandre-schmidt

Post on 30-Jun-2015

205 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

  • 1. Workshop Orientao a Objetos Conceitos bsicos e Exemplo de aplicao no projeto SaguAlexandre Heitor Schmidt Solis Cooperativa de Solues Livres 2011

2. Sumrio Conceitos bsicos de orientao a objetosMtodos mgicos em PHPComparao entre classes em PHPConvenes da SolisDiagramao UML Diagrama de classesMapeamento Objeto-Relacional (ORM)Types do Sagu 3. Conceitos bsicos Classe vs. Objeto Classe a declarao. Objeto a instncia.Visibilidade (public/private/protected) Para atributos, var = public Para mtodos, = publicClasses e mtodos abstratos Podem possuir implementao ou noPodem ser sobrescritosClasses abstratas no podem ser instanciadasExemplo: sab 4. Conceitos bsicos (2) Constantes teis para configurao da classe Campos que podem assumir um domnio especfico de valores. Minimizam uso de hard-code.Construtores Declarao public function MinhaClasse public function __construct 5. Conceitos bsicos (3) Construtores Executam quando uma classe instanciadaDestrutores Declarao public function __destruct()Executam quando no h mais referncias instncia. Chamadas a exit() tambm executam destrutores. 6. Conceitos bsicos (4) Herana class MinhaClasse extends OutraClasseDiferena entre private e protectedForma como o Miolo explora herana Chamada de mtodos da classe filha a partir da classe pai $this->createFields() no MForm chama mtodo createFields() do formulrio que estende o MForm. 7. Conceitos bsicos (5) Mtodos estticos e no estticos Estticos No estticos No existe $this->. Usa-se self:: til para bibliotecas de funes, ajax, sesso... Exemplo: SAGU::getParameter() Uso de parent:: para chamar o mtodo esttico da classe pai. Uso como objeto normal, com atributos, $this, etc.Classes podem ter mtodos estticos e no estticos. MSubdetail 8. Mtodos mgicos 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.Referncia completa http://www.php.net/manual/en/language.oop5.magic.php 9. Comparao entre classes em PHP Operador == TRUE quando os valores dos atributos so iguais. Nota: '01' = 1Operador === TRUE quando os dois operandos se referem a uma mesma instncia. Exemplo: 10. Convenes da Solis Coding standardsCada classe em um arquivo Arquivo deve conter apenas a definio da classe, sem mais funes ou outras declaraes. 11. Diagramao UML Diagrama de Classes 12. Diagramao UML Diagrama de Classes (2) 13. Diagramao UML Diagrama de Classes (3) 14. Diagramao UML Diagrama de Classes (4) 15. Diagramao UML Diagrama de Classes (5) 16. Diagramao UML Diagrama de Classes (6) 17. Diagramao UML Diagrama de Classes (7) 18. Diagramao UML Diagrama de Classes (8) 19. Diagramao UML Diagrama de Classes (9) 20. Diagramao UML Diagrama de Classes (10) 21. Diagramao UML Diagrama de Classes (11) 22. Mapeamento Objeto-Relacional 23. Mapeamento Objeto-Relacional (1) Criao dos ids com nomes intuitivos. Cada id vira um atributo da classe. 24. Mapeamento Objeto-Relacional (2) 25. Mapeamento Objeto-Relacional (3)Alguns ajustes geralmente so necessrios 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. Types do Sagu Histrico Arquivo types.class Apenas declaravam classes com atributos, geralmente sem mtodos. Concentravam vrias classes num nico arquivo. Utilizao precria dos conceitos de OO.Diretrio db (business) do Miolo Classes viraram repositrios de funes. Regras de negcio ficavam parte na classe, parte no prprio formulrio. 27. Types do Sagu Histrico (2) SDatabase SForm e derivados Facilitou a utilizao de transaes. Facilitou a criao de interfaces.SType Facilitou a comunicao da aplicao com o BD. 28. Types do Sagu Vantagens Facilidade de uso Diminuio da necessidade de repetio de cdigoProgramao em camadas Encapsulamento da comunicao com o BDIsolamento as regras de negcioReutilizao de cdigoProgramao orientada a objetos* * Mtodos mgicos e iteraes em objetos para extrao de valores ferem de certa forma o conceito, mas oferecem produtividade(?). 29. Types do Sagu Desvantagens Can't think of any! ;-) 30. Construtor 31. Mtodo de carga do objeto 32. Mtodo de buscaIteraes perigosas.Problemas de performance 33. Busca especfica para grid Mtodos de busca ficam na classe por convenincia. 34. Mtodo nico para salvar Usurio da classe no precisa se preocupar se est inserindo um novo registro ou atualizando um registro existente. 35. Mtodo privado para insero 36. Mtodo privado para atualizao 37. Mtodos auxiliares 38. Problemas comuns Performance Problema dos processos seletivos do cliente FAMETRO. J contornado com a carga sob demanda.Regras de negcio fora da classe Vem sendo trabalhado. 39. Referncias Manual do PHP http://www.php.net/manual/pt_BR/language.oop5.phpProjeto Sagu http://www.solis.coop.br/sagu 40. Fim! Obrigado! Alexandre Heitor Schmidt Solis 2011 [email protected] [email protected]