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




Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 8 (more)