Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Prof. Maria Augusta Vieira Nelson PUC Minas Prof. Torsten Paul Nelson
PADRÕES DE PROJETO..
Design Patterns Patrícia Mateus nº3343 Carla Guerreiro nº3157
Modelagem de Software Orientado a Objetos
Design Patterns Builder Pattern
Elisabeth Suescún Leandra Mara da Silva
Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
Padrão Bridge (Handle/Body)
Elizabeth Suescún Monsalve
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrões de Projeto Prototype.
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.
Padrões GoF - Façade.
Chain of Responsibility
Padrões - introdução O que é um padrão?
Padrão de Construção Factory Method
Documentação da Neptus Framework
Padrão de Projeto Builder
Conexão com Bancos de Dados Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.
Design Patterns Projeto de Sistemas de Software.
Fundamentos da Engenharia de Software
Visão crítica sobre padrões: Over Engineering
Padrões de projeto detalhados Factory Method, Abstract Factory
Singleton e Adapter Professor: Nazareno Andrade
Módulo III Padrões GOF Professores
Projeto de Sistemas de Software
Chain of Responsibility
Arquitetura de Software Visão Geral
Arquitetura de Software Introdução
Padrões de Projeto Aplicações empresariais são complexas
Design Patterns e você. Jay Moretti Grupo de desenvolvedores Actionscripts do Brasil
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
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.
Design Pattern (Padrões de Projeto)
Padrões de Projeto.
Introdução Padrões de Projeto
Design Patterns (Padrões de Projeto)
Trabalho Final de Padrões de Projeto
Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema.
Padrões de Projeto Abstract Factory.
Padrões de Projeto.
Factory.
Projetando Objetos com Responsabilidades
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 de Software Orientado a Objetos
Padrões de Projeto Alcides Calsavara
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Padrão Composite Definição
Jobson Ronan Padrões GoF Jobson Ronan
Detalhamento dos Padrões - Estrutura
Introdução a Padrões.
1 - Introdução a Padrões de Projeto
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.
Introdução a Padrões. Contexto Arquitetura do Sistema Análise e Projeto OO com UML e Padrões | 2 GUI / Comunicação NEGÓCIO Interfaces negócio-dados DADOS.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
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.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Padrões de Projeto Estruturais
Padrões de Projeto Estruturais
Padrões de Projeto.
Arquitetura e padrões de software
Transcrição da apresentação:

Padrões de Projeto

O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como Padrões de Projeto (Design Patterns);  Catálogo GoF (Gang of Four);  Visam a melhorar o acoplamento e a coesão do projeto de software;  Devem ser adaptados ao contexto;  Devem ser reutilizáveis;  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como Padrões de Projeto (Design Patterns);  Catálogo GoF (Gang of Four);  Visam a melhorar o acoplamento e a coesão do projeto de software;  Devem ser adaptados ao contexto;  Devem ser reutilizáveis;

Os Padrões GoF

Criação  Singleton;  Factory Method;  Abstract Factory;  Builder;  Prototype;  Singleton;  Factory Method;  Abstract Factory;  Builder;  Prototype;

Singleton

 Exemplo de aplicação:  Contador de acessos ao website;  Conexão com o Banco de Dados;  Runtime (Java);  Vantagens:  Compartilhamento de objetos comuns;  Garante apenas um objeto;  Desvantagens:  Necessita de cuidado com a implementação de concorrência;  Exemplo de aplicação:  Contador de acessos ao website;  Conexão com o Banco de Dados;  Runtime (Java);  Vantagens:  Compartilhamento de objetos comuns;  Garante apenas um objeto;  Desvantagens:  Necessita de cuidado com a implementação de concorrência;

Factory Method

 Exemplo de Aplicação:  Sempre que houver muitas diferentes classes a serem instanciadas;  Vantagens:  Instanciação indireta;  Fácil adição de novas classes;  Desacoplamento;  Pretinho básico: vai bem com tudo;  Desvantagens:  Uma classe concreta criadora para cada item produzido;  Nem sempre o desacoplamento é garantido;  Factory Method com aninhamento de ifs ou um switch gigante;  Exemplo de Aplicação:  Sempre que houver muitas diferentes classes a serem instanciadas;  Vantagens:  Instanciação indireta;  Fácil adição de novas classes;  Desacoplamento;  Pretinho básico: vai bem com tudo;  Desvantagens:  Uma classe concreta criadora para cada item produzido;  Nem sempre o desacoplamento é garantido;  Factory Method com aninhamento de ifs ou um switch gigante;

Estrutura  Facade;  Proxy;  Adapter;  Bridge;  Composite;  Decorator;  Flyweight;  Facade;  Proxy;  Adapter;  Bridge;  Composite;  Decorator;  Flyweight;

Facade

 Vantagens:  Um ponto de entrada;  Fácil saber quais são e onde estão as funcionalidades;  Se a funcionalidade do subsistema mudar, apenas uma classe muda;  Desvantagens:  Facade é altamente acoplado ao subsistema;  Facade deve ser completo e sem defeitos;  Vantagens:  Um ponto de entrada;  Fácil saber quais são e onde estão as funcionalidades;  Se a funcionalidade do subsistema mudar, apenas uma classe muda;  Desvantagens:  Facade é altamente acoplado ao subsistema;  Facade deve ser completo e sem defeitos;

Proxy

 Aplicações:  Remote Proxy;  Virtual Proxy;  Protection Proxy;  Smart Reference;  Aplicações:  Remote Proxy;  Virtual Proxy;  Protection Proxy;  Smart Reference;

Proxy

 Vantagens:  Inserção de funcionalidade de forma desacoplada;  Possibilidade de troca de objetos em tempo de execução;  Flexível;  Desvantagens:  O objeto proxy deve ser criado em algum momento;  Funcionalidade “escondida”;  Vantagens:  Inserção de funcionalidade de forma desacoplada;  Possibilidade de troca de objetos em tempo de execução;  Flexível;  Desvantagens:  O objeto proxy deve ser criado em algum momento;  Funcionalidade “escondida”;

Comportamento  Strategy;  Observer;  Chain of Responsibility;  Command;  Interpreter ;  Iterator;  Mediator;  Memento;  State;  Template Method;  Visitor;  Strategy;  Observer;  Chain of Responsibility;  Command;  Interpreter ;  Iterator;  Mediator;  Memento;  State;  Template Method;  Visitor;

Strategy

 Vantagens:  Simples;  Alto desacoplamento;  Intercâmbio de Algoritmos;  Desvantagens:  Precisa construir um objeto de uma classe concreta;  Nem sempre é a solução para tudo;  Vantagens:  Simples;  Alto desacoplamento;  Intercâmbio de Algoritmos;  Desvantagens:  Precisa construir um objeto de uma classe concreta;  Nem sempre é a solução para tudo;

Exercício  Melhore o diagrama de classes ao lado com a aplicação de pelo menos um padrão de projeto;  Sugestão: Strategy  Melhore o diagrama de classes ao lado com a aplicação de pelo menos um padrão de projeto;  Sugestão: Strategy

Exercício

Observer

 Vantagens:  Desacopla notificadores e observadores;  Aumenta a coesão;  Desvantagens:  Notificações desnecessárias;  Complexidade;  Vantagens:  Desacopla notificadores e observadores;  Aumenta a coesão;  Desvantagens:  Notificações desnecessárias;  Complexidade;

Exercício  Você precisa criar um software para uma empresa que trabalha com bolsa de valores;  Essa empresa trabalha com a NASDAQ e com a BOVESPA;  Sempre que uma das duas bolsas sobe, todos os clientes da empresa devem ser notificados, mas quando uma das duas bolsas cai, somente os clientes premium podem ser notificados;  A NASDAQ e a BOVESPA possuem seus próprios subsistemas que podem ser acessados remotamente;  Faça o diagrama de classes para o sistema;  Você precisa criar um software para uma empresa que trabalha com bolsa de valores;  Essa empresa trabalha com a NASDAQ e com a BOVESPA;  Sempre que uma das duas bolsas sobe, todos os clientes da empresa devem ser notificados, mas quando uma das duas bolsas cai, somente os clientes premium podem ser notificados;  A NASDAQ e a BOVESPA possuem seus próprios subsistemas que podem ser acessados remotamente;  Faça o diagrama de classes para o sistema;

Exercício – Exemplo Ruim

Exercício – Solução

Exercício – Diagrama de Sequência

Conclusão  Soluções quase prontas;  Precisa de adaptações;  Melhora a coesão e o acoplamento dos elementos do projeto;  Podem ser complexos;  Não podem ser aplicados sempre;  É possível combiná-los;  Anti-patterns;  Soluções quase prontas;  Precisa de adaptações;  Melhora a coesão e o acoplamento dos elementos do projeto;  Podem ser complexos;  Não podem ser aplicados sempre;  É possível combiná-los;  Anti-patterns;