Soluções elegantes para problemas recorrentes

Slides:



Advertisements
Apresentações semelhantes
Projeto Qualified Curriculum
Advertisements

Instalação e Configuração
Projeto – Parte II - Exemplos de Diagrama de Colaboração
PADRÕES DE PROJETO..
Rational Unified Process
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Natanael (njsj) Thiago (tan2) Rodrigo (rml2)
15/1/2014 Professor Leomir J. Borba- – 1 Tec. Em Analise e desenvolv. De Sistemas analise.
APLICAÇÕES DE LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS ACESSO A BANCO DE DADOS COM O JDBC Prof. Thiago Pereira Rique
Interação Cliente Servidor
Endereçamento de hardware e identificação de quadros
DNS Introdução.
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Singleton.
Padrões GoF - Façade.
Padrões GoF – Factory Method
Fundamentos de Banco de Dados Prof. Alexander Roberto Valdameri
GERENCIAMENTO DE REDES
Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho
Documentação da Neptus Framework
Grupo 5: Fernando Lourenço Pinho Costa Rafael de Souza Santos
Visão Geral do Desenvolvimento de Sistemas e Papéis no Desenvolvimento de Software Marcely Dias
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
B ANCO DE D ADOS E JDBC Profa. Msc. Cintia Carvalho Oliveira Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF 1.
Camada de Transporte: Portas, Sockets, Aplicações em Rede
DIAGRAMA DE COMPONENTES
Desenvolvimento de Projetos e Aplicações Web
Sistemas Operacionais
Strategy e Template Method
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Fundamentos da Engenharia de Software
Nazareno Andrade (baseado no material de Hyggo Almeida)
Visão crítica sobre padrões: Over Engineering
Singleton e Adapter Professor: Nazareno Andrade
Linguagens Orientadas a Objeto
Integração com Banco de Dados
Software Design Patterns & AntiPatterns
Análise e Projeto de Sistemas
Projeto de Banco de Dados
Programação Orientada à Objetos
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
Nome alunos 1 Título UC. Título – slide 2 Conteúdo Conteúdo 2.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Configuração do Ambiente de programação
Implementação MVC Pedro Antonino.
Abr-17 Atividades, Artefatos e Responsáveis da Disciplina de Análise e Projeto Fluxo de análise e projeto.
Introdução Padrões de Projeto
Laboratório de Programação
Padrões de Projeto Abstract Factory.
Padrões de Projeto.
Factory.
Padrão de desenvolvimento
Design Patterns A adoção dos padrões terá um efeito profundo e duradouro sobre a forma de escrevermos programas Ward Cunningham e Ralph Johnson.
Padrões de Projeto Alcides Calsavara
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Jobson Ronan Padrões GoF Jobson Ronan
1 - Introdução a Padrões de Projeto
Projeto QuickList 51GoodIdea. Missão Fornecer aos clientes soluções inteligentes, intuitivas e práticas. Sempre priorizando funcionalidade e fornecimento.
Módulo II Capítulo 1: Orientação a Objetos
Padrões de Projetos Professora Lucélia. Conceitos É uma solução conhecida para um problema comum São técnicas que nos dão uma boa solução para determinados.
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Projeto de Arquitetura de Software
Aula 8 – Padrão Singleton
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

Soluções elegantes para problemas recorrentes Design Patterns Bruno Lustosa Pereira bruno@lustosa.net Soluções elegantes para problemas recorrentes PHP Conference Brasil 2006-12-01 - São Paulo

Design Patterns O que são esses padrões? Estruturas recorrentes encontradas no processo de desenvolvimento de softwares orientados a objeto. Modelos de soluções reutilizáveis para problemas encontrados diariamente. Não é re-uso de código, e sim de idéias e estratégias de desenvolvimento. 1 / 21

Design Patterns GoF - Gang of Four O primeiro livro sobre o assunto. A comunidade se refere aos 4 autores como a "Gangue dos Quatro". 2 / 21

Design Patterns Tipos de Padrões Criação: Principal função é lidar com os mecanismos de criação de objetos. Exemplos: Factory, Singleton e Registry. Estruturais: Simplificam a realização de relacionamentos entre diferentes classes. Exemplos: Facade, Adapter e Decorator. Comportamentais: Preocupam-se com a atribuição de responsabilidades entre objetos. Exemplos: Observer, Strategy. 3 / 21

Design Patterns Prós e Contras Prós: Facilitam o re-uso de técnicas e arquiteturas de software já testadas com sucesso. Define um padrão de comunicação compartilhado pela equipe de desenvolvimento. Contras: Precisa ser reprogramado em cada aplicação. Uso indiscriminado pode aumentar muito a complexidade. 4 / 21

Design Patterns Factory (fábrica) Problema: Como encapsular o processo de criação de objetos complexos? Exemplos: Objetos onde é necessário escolher qual subclasse instanciar, onde é necessário buscar suas configurações iniciais, ou onde se precisa criar objetos auxiliares como parte do processo de criação. 5 / 21

Design Patterns Diagrama UML do Factory Método factory() da Fábrica retorna instâncias de Produto. 6 / 21

Design Patterns Singleton Problema: Como garantir que uma classe só possua uma única instância, e que essa instância seja acessível globalmente? Exemplos: Conexão com BD, escrita em arquivo, spool de impressão, outros padrões como o Registro. 7 / 21

Design Patterns Diagrama UML do Singleton Método instance() retorna a instância do singleton. Construtor private. Propriedade instance guarda referência à instância. 8 / 21

Design Patterns Registry (registro) Problema: Como criar um "catálogo" de objetos, de onde se possa conseguir referências a eles através de uma interface conhecida? Exemplo: Site com conexões para múltiplos BDs. As conexões ficam no registro, facilitando as consultas em qualquer ponto do código. 9 / 21

Design Patterns Diagrama UML do Registry Método instance() retorna a instância do registro. Construtor private. store é um array que guarda as referências dos objetos. set() guarda referências e get() as recupera. 10 / 21

Design Patterns Facade (fachada) Problema: Como simplificar a interface de um sistema ou classe complexos, criando uma “fachada” mais amigável? Exemplos: Um gateway de pagamento, que serve de interface com bancos e administradoras de cartões. 11 / 21

Design Patterns Diagrama UML do Facade Facade é a classe que provê uma interface simples para um subsistema complexo. 12 / 21

Design Patterns Adapter (adaptador) Problema: Como fazer com que duas classes com interfaces incompatíveis possam se falar? Exemplos: Uma classe que só funciona com determinada versão de outra. Um adaptador poderia ser usado para fazer com que essa classe funcionasse com outras versões. 13 / 21

Design Patterns Diagrama UML do Adaptador Cliente fala com Compatível. Adaptador faz com que Cliente fale com Incompatível. 14 / 21

Design Patterns Decorator (decorador) Problema: Como adicionar funcionalidade a uma classe dinamicamente, sem precisar usar herança? Exemplos: Um objeto "janela", que pode possuir diversas funcionalidades opcionais, como bordas, barra de rolagem, menu, etc. Usando herança, chegaríamos a uma explosão de subclasses, inviabilizando a manutenção. 15 / 21

Design Patterns Diagrama UML do Decorator 16 / 21

Design Patterns Observer (observador) Problema: Como alertar objetos de que houve uma mudança de estado em um objeto de forma automática? Exemplos: Campos em uma aplicação PHP-GTK, outros casos onde exista uma interdependência entre objetos (uma ação precisa ser tomada por um objeto A caso o estado do objeto B seja alterado). 17 / 21

Design Patterns Diagrama UML do Observer Objeto observável alerta com uma chamada a notify(), que executa update() em cada observador. 18 / 21

Design Patterns Strategy (estratégia) Problema: Como alterar a implementação interna de um objeto dinamicamente? Exemplos: Classes onde se tenham muitos comandos switch. Qualquer problema onde se tenha que tomar uma ação diferente dependendo de algum tipo ou valor. 19 / 21

Design Patterns Diagrama UML do Strategy Classe Ordenacao pode usar qualquer uma das estratégias, chamando o método ordena(). 20 / 21

Design Patterns Mais informações http://www.lustosa.net/ - Site pessoal, com os slides e a implementação em PHP dos padrões apresentados. http://www.phppatterns.com/ - Excelente site sobre design patterns em PHP. 21 / 21