PADRÕES DE PROJETO..

Slides:



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

Modelagem de Software Orientado a Objetos
Engenharia de Software
Design Patterns Builder Pattern
Elisabeth Suescún Leandra Mara da Silva
Padrão Bridge (Handle/Body)
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrões de Projeto Prototype.
Template Method Projeto de Sistemas de Software. © LES/PUC-Rio Template Method Motivaçã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.
Eduardo Bezerra Padrões GoF Eduardo Bezerra
Template Method Intenção: definir o esqueleto de um algoritmo em uma operação, postergando (delegando) a definição de alguns passos desse algoritmo para.
Chain of Responsibility
Padrões - introdução O que é um padrão?
Padrão de Construção Factory Method
Classes e objetos P. O. O. Prof. Grace.
Padrão de Projeto Chain of Responsability e Template Method
Aula prática 13 Orientação a Objetos – C++ Parte 1
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
Padrões de Projeto Aplicações empresariais são complexas
Design Patterns e você. Jay Moretti Grupo de desenvolvedores Actionscripts do Brasil
Programação Orientada à Objetos
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)
PROGRAMAÇÃO ORIENTADA A OBJETOS
1 Padrões de Software Padrões GoF (Parte 2) Eduardo Bezerra Outubro/2005.
Padrões de Projeto.
Introdução 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
1 Padrões: Composite (p. 163) Objetivo: compor objetos em estruturas de árvores para representar relações de parte/todo. “Composite” permite tratar objetos.
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
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.
Aula 5 – Padrão Decorator
Aula 6 – Padrão Factory Method
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
Aula 7 – Padrão Abstract Factory
Padrões Criacionais Abstraem o processo de criação de instâncias (objetos), oferecendo flexibilidade no que é criado, por quem, como e quando.
Padrões de Projeto Aula 10 – Padrão Façade.
©2003, Alexandre Vasconcelos & Augusto Sampaio CIn-UFPE1/65 Padrões de Projeto.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
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.
Princípios de design SOLID Padrões de Projeto Orientados a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
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 Aula 5 – Padrão Decorator 1. QuickReview: Observer Definição: Quando usar? Tipo de padrão? Como? 2.
Arquitetura e padrões de software
Transcrição da apresentação:

PADRÕES DE PROJETO.

GoF(Gang of Four) GRASP (General Responsibility Assignment Software Patterns).

PRINCÍPIOS DE PADRÕES DE PROJETO.

Princípio Aberto Fechado Entidades de software como classes, módulos e funções devem ser abertas para expansão, mas fechadas para modificações

Princípio Inversão de Dependência • “Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender de abstrações.”; • “Abstrações não deve depender de detalhes. Detalhes devem depender abstrações”.

Princípio Segregação de Interfaces “Os clientes não devem depender de interfaces que eles não usam”. Este princípio nos ensina a cuidar da forma que escrevemos nossas interfaces. Quando escrevemos as nossas interfaces, deve-se ter o cuidado de só acrescentar métodos que deveriam estar lá. Se acrescentamos métodos que não deveriam estar lá as classes que à implementam terão que implementar esses métodos. Por exemplo, se vamos criar uma interface chamada Trabalho e adicionar um método de intervalo para o almoço, todos os trabalhadores terão de implementá-lo. E se o trabalhador é um robô? Interfaces contendo métodos que não são específicas para isso são chamadas poluídas ou de gorduras interfaces. Devemos evitá-los.

Programe para uma interface, e não para uma implementação. Desta forma, você encapsula os códigos que podem variar para que futuras alterações não sejam complicadas e também forneça um único ponto de alteração. Esse princípio é a base de todos os padrões. O padrão strategy a utiliza.

Dê preferência para o “Tem um” à “é um”. “Dar prioridade e composição”. Padrões de projeto tendem a dar prioridade a utilização de composição, ela permite o controle dos objetos em “tempo de execução”, dinamicamente, enquanto heranças são estáticas e pouco flexíveis(“em tempo de compilação”) Lembre-se que composição é um tipo de associação(“UML”) bidirecional entre objetos instanciados, daí a manipulação ser em tempo de execução.

Encapsule o que varia Programe para interface à implementação. Dessa forma seu código estará preparado para o futuro de forma mais flexível e extensível.

Padrões de criação Abstract Factory Builder Factory Method Prototype Singleton

Abstract Factory Fornece uma interface para a criação de uma família de objetos relacionados ou dependentes, sem especificar suas classes concretas. Também é conhecida como “KIT”. Como possui escopo de objeto, manipula objetos em “tempo de execução(composição)” fornece interfaces para serem implementadas por classes que desejam criar seus objetos.

Builder Permite a separação da construção de um objeto complexo da sua representação, de forma que o mesmo processo de construção possa criar diferentes representações. Um exemplo é a conversão em “tempo de execução” do um formato RTF. Se diferencia do Abstract Factory pela criação de objetos passo a passo, ao invés de criar todos os objetos de uma só vez.

Factory Método(Fabrica Virtual) Define uma interface para a criação de um objeto, mas deixa as subclasses decidirem qual classe a ser instanciada. permite postergar(deferir) a instanciação em subclasses. Em resumo, deixa as subclasses escolherem quais objetos criarem(através de herança). Esse padrão é o único voltado para o escopo classe, os demais são voltados para objeto. Lembrando que os escopo de classe são manipulados em “tempo de compilação(herança)” e os de objetos, em “tempo de execução(composição e delegação)”.

Prototype Especifica objetos a serem criados usando uma instância-protótipo e cria(clona) uma cópia a partir desse protótipo. Possui escopo de objeto, então, adiciona ou remove objetos em “tempo de execução”

Singleton Garante que uma classe tenha somente uma instância e fornece um ponto global de acesso a mesma.

Termos estudados Escopo Princípios Aberto/fechado, preferir composição, Dependência, programe para interfaces e encapsule o que varia. Orientação Padrões de criação Abstract Factory, builder, factory method, prototype e singleton.

Padrões estruturais Adapter Bridge Composite Decorator Façade Flyweight Proxy

Adapter(Wrapper) Converte interface de uma classe em outra interface, esperada pelo cliente. O Adapter permite que interfaces incompativeis trabalhem em conjunto. OBS: O adapter é o único padrão estrutural que trabalha com o ambos os escopos(Classe e objeto)

Bridge(Handle/body) Desacopla a abstração de sua implementação, de modo que as duas possam variar independentemente. Exemplo: Criar uma aplicação que funcione no windows e no linux. É indicado quando podemos ter várias implementações possíveis para uma abstração e vc deseja evitar o vínculo entre a abstração e sua da implementação.

Composite Compor os objetos em uma estrutura de árvore para representar uma hierarquia parte/todo. Exemplo: Aplicações gráficas que agrupam objetos simples para a partir daí formarem estruturas complexas(Paletas do photoshop ou do MS visio.)

Decorator(Wripper) Dinamicamente, adiciona nova responsabilidade a objetos

Facede Fornece uma interface unificada para um conjunto de interfaces de um subsistema. * É aplicável quando queremos fornecer uma única interface para um subsistema complexo. * Estruturar subsistemas em camadas. * Reduzir o acoplamento entre clientes e subsistemas.

Flyweight A intenção é usar o compartilhamento para suportar uma grande quantidade de objetos de granularidade fina. Use o Flyweight quando a quantidade de objetos foi muito grande.

Proxy Fornece um substituto(surrogate) ou um marcador da localização de um objeto para controlar o acesso a esse objeto. Exemplo: quando abrimos o word uma foto que exista na página 2 não precisará ser carregada se nós só precisarmos visualizar a pagina 1. A função do proxy é controlar a criação de objetos no momento que realmente é necessário.

Padrões de comportamento Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor

Chain of Responsibility Evita o acoplamento do remetente de uma solicitação ao seu receptor, ao dar a mais de um objeto a oportunidade de tratar a solicitação.Encadear os objetos receptores, passando a solicitação ao longo da cadeia até que algum objeto a trate. A Idéia desse padrão é desacoplar o remetente e receptor, dando a oportunidade a múltiplos objetos para tratar a solicitação.

Command(Action ou transaction) Encapsular uma solicitação como um objeto, desta forma permitindo que clientes parametrizem diferentes solicitações, enfileirem ou façam o registro (log) de solicitações e suportem operações que podem ser desfeitas.

Interpreter Dada uma linguagem, defina uma representação para sua gramática.

Iterator(Cursor) Fornece uma maneira de acessar seqüencialmente os elementos de um objeto.

Mediator Define um objeto que encapsula como um conjunto de objetos interage. Ao invés de cada os objetos se comunicarem entre sí, se comunicam com o mediator (Mediador) de forma centralizada, isso diminui o acoplamento de muitos objetos entre sí. Compare-o como um switch. Melhor exemplo é o DNS.

Memento(Token) Sem violar o encapsulamento,captura e externaliza o estado interno de um objeto de modo que ele possa ser restaurado posteriormente. Pense no memento como, como o recurso de salvar o estágio de um jogo para ser restaurado depois. Ele faz um snapshot do objeto. Interessante quando queremos implementar recursos de checkpoint e rollback.

Observer (Dependents, Publish-Subscribe) Define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto muda de estado, todos os seus dependentes sejam atualizados.

State Permite a alteração do comportamento de um objeto quando seu estado interno é modificado.

Strategy(Policy) Define uma família de algoritmos, encapsula cada um deles para torná-los intercambiáveis, esse padrão permite que o algoritmo varie independente dos clientes que a utilizem. Lembre-se do princípio: “encapsular o que varia”.

Template method Define um esqueleto de um algoritmo em uma operação, postergando a operação de alguns passos para subclasses. Esse padrão permite que subclasses redefinam alguns passos sem mudar sua estrutura. Exemplo: em um algoritmo para fazer chá ou café teríamos o esqueleto de todos os passos comuns para fazer café e chá, deixando para subclasses apenas os passos “Adicione pó de café”, para a subclasse que implemente fazer café, e “Adicione pó de chá”, para a subclasse que implementa fazer chá. É boa prática usar a função “final” do java para evitar que o algoritmo seja alterado por subclasses.

Visitor Representa uma operação a ser executada sobre os elementos da estrutura de um objeto. Permite definir uma nova operação sem mudar as classes dos elementos sobre os quais opera.

DIVISÃO

Novos princípios Dependa de abstrações não de classes concretas. Princípio do conhecimento mínimo: “Só fale com seus amigos mais próximos”, Lembre-se do “facade” e do “mediator” Princípio Hollywood:”Não nos ligue, nós ligamos pra vc”. Ele evita o colapso de dependências. Faz com que módulos de alto nível controlem quando módulos de baixo nível serão chamados. Ex: Template method, Factory method, Observer.