Projeto de Sistemas de Software Luana Lachtermacher

Slides:



Advertisements
Apresentações semelhantes
TADs Vector, Lista e Sequência
Advertisements

ADT – Arvore Binária de Pesquisa
Chain of Responsibility
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Projeto de Sistemas de Software
A Framework to Implement Self-Adaptive Agents that Apply Self-Test Andrew Diniz da Costa
Padrões de Projeto Prototype.
Kleinner Farias e Raphael do Vale
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Orientação a Objetos: Modificador Final para Métodos e Classes
1 Java: Tratamento de Exceções Alcides Calsavara.
VHDL Very High Speed Integrated Circuit Hardware Description Language Prof. Eduardo Todt 2008.
Pilhas e Filas.
Estruturas Fundamentais
Filas circulares.
Listas Encadeadas Circulares Listas Duplamente Encadeadas
Chain of Responsibility
Walfredo Cirne walfredo.dsc.ufpb.br
Ronaldo Celso Messias Correia
Container Managed Persistent Bean Kellyton Brito Projeto Compose
Compressão por Hardware
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço OXManager Treinamento no GRADEp Serviço OXManager OXManagerDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Framework Master-Worker.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 Serviço Worb Treinamento no GRADEp Serviço Worb WorbDemo.
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço Collector Treinamento no GRADEp Serviço Collector CollectorDemo e.
Classes Internas e Anônimas
Servidores e Programação Web Redes de Computadores.
Disciplina: Paradigmas e Ferramentas de Desenvolvimento de Software
TerraRadar Aplicativo para tratamento de imagem de Radar Utilizado através de dois tipos de interface : TerraView - (QT) Browser - (PHP)
Design Patterns – Composite e Visitor
Templates e Questões de Design Programas são geralmente construídos segundo um design que é relativamente bem mapeado nos mecanismos oferecidos pela linguagem.
GT Processo Eletrônico SG Documentos Eletrônicos Segunda reunião – 28/08/2009 Interlegis.
CE-262 Ontologia e Web Semântica Prof. José M Parente de Oliveira Sala 120 – Prédio da Computação Linguagens para a Web Semântica.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo XI Noções de Estruturas de Dados.
Implementação Do JXTA Como Protocolo De Transporte Do JacORB
04:27 Introdução Tipos de Fluxo de Dados e de Arquivos Manipulação de Arquivos em Java Classes FileReader e FileWriter Classes FileInputStream e FileOutputStream.
Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes.
Programação Concorrente com Thread Java
Because we were commissioned toGo…make disciples World Evangelism Fund Offering(date)
1 Aula 3 Listas e iteradores (cont.). 2003/2004 Programação Orientada para Objectos 2 ListaDeInt : interface class ListaDeInt { public: typedef int Item;
2002/2003 Programação Orientada para Objectos 1 Aula 3 Utilização de listas Melhorando a implementação das listas e iteradores Reflexão sobre interfaces.
Indirect Object Pronouns - Pronomes Pessoais Complemento Indirecto
O Mecanismo de Threads em Java 2. Criar uma classe herdeira da super classe Thread public class minhaThread extends Thread{ public class minhaThread extends.
Professor: Hyggo Almeida
Professor: Hyggo Almeida
Fazendo e Brincando: Confecção de Materiais para as Aulas de Inglês
Threads, Gerenciamento de Threads Pool de Threads, Grupo de Threads Variáveis Locais à Threads.
Sincronização com Locks. Locks É um mecanismo de sincronização de processos/threads em que estas devem ser programadas de modo que seus efeitos sobre.
Melhorias e Mensagens Amigáveis ao Usuário Centro de Informática Universidade Federal de Pernambuco Bruno Felipe Marco André Paulo Fernando Rodolfo Santos.
INPE / CAP-315 Airam J. Preto, Celso L. Mendes Aula 30 (1) Empacotamento de Dados em MPI Tópicos: Buffer de Mensagem Empacotamento/Desempacotamento.
Java em Redes de Computadores
Scala Bruno Barros e Rebeka Gomes
Java 2D Marco Antonio. Java2D Conjunto de classes para trabalhar com gráficos e imagens. A principal classe desta API é JComponent. Com esta classe é.
Orientação a Objetos e Java Graduação em Ciência da Computação
Java Generics Adeline de Sousa Silva.
Tipos Especiais de Listas
Alisson Rafael Appio SOP aplicado em um jogo tipo de corrida usando a arquitetura cliente e servidor Alisson Rafael Appio
© 2012 Autodesk Autodesk Revit para projetos executivos de arquitetura Módulo 2: Otimizando a modelagem para documentação Tiago Marçal Ricotta Gerente.
Unit 22 Relative Clauses and Pronouns.
Java Kickstart, day 2 Semelhanças com linguagem C.
Associação. 2 Desafio – Aula class Aluno { 2. private String nome; 3. private float nota; 4. public Aluno(String nome, float nota){ 5. this.nome.
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Java: Interfaces Alcides Calsavara.
Singleton e Template Method
TQS - Teste e Qualidade de Software (Software Testing and Quality) Test Driven Devlopment Experiment João Pascoal Faria.
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Transcrição da apresentação:

Projeto de Sistemas de Software Luana Lachtermacher Padrão Prototype Projeto de Sistemas de Software Luana Lachtermacher

Propósito Criação de objetos específicos através de uma instância de um protótipo. É um padrão de criação. Propósito: Os Decorators fornecem uma alternativa flexível do uso de subclasses para extensão de funcionalidades. © LES/PUC-Rio

Motivação Ao invés de criar diversos classes que diferem pouco, é possível fazer copias de uma instância(protótipo). Cada copia é utilizada de acordo com suas propriedades específicas. O toolkit deveria permitir a adição de propriedades, como bordas, ou comportamentos, como rolamento, para qualquer componente da interface do usuário. Há duas formas de se fazer isso: Uma forma de se adicionar responsabilidades é a herança. Herdar uma borda de uma outra classe coloca uma borda em volta de todas as instâncias de uma subclasse. Contudo, isto é inflexível, porque a escolha da borda é feita estaticamente. Um cliente não pode controlar como e quanto decorar o componente de uma borda. Uma abordagem mais flexível é embutir o componente em outro objeto que acrescenta a borda. O objeto que embute o primeiro é chamado decorator. O decorator segue a interface do componente que decora, de modo que sua presença é transparente para os clientes do componente. O decorator repassa solicitações para o componente, podendo executar ações adicionais (tais como desenhar uma borda) antes ou depois do repasse. A transparência permite encaixar decoradores recursivamente, desta forma permitindo um número ilimitado de responsabilidades adicionais. © LES/PUC-Rio

Aplicabilidade Sistema independente de como os produtos são criados, compostos e representados. Quando as classes são instanciadas em tempo de execução ou Para evitar a criação de classe hierárquica de fabricas que tem paralelo a hierarquia de produtos Quando instâncias da classe tem uma das poucas combinações de estados. © LES/PUC-Rio

Estrutura © LES/PUC-Rio

Participantes Prototype ConcretePrototype Client Define a interface para se clonar ConcretePrototype Implementa uma operação para se clonar. Client Cria um novo objeto pedindo ao protótipo para se clonar. © LES/PUC-Rio

Colaborações O client pede ao protótipo para se clonar. © LES/PUC-Rio

Vantagens / Desvantagens Vantagem : Maior abstração Adição e remoção de produtos em tempo real. That's a bit more flexible than other creational patterns, because a client can install and remove prototypes at run-time. Criação de novos objetos variando valores e estruturas. Reduced subclassing. Factory Method (107) often produces a hierarchy of Creator classes that parallels the product class hierarchy. The Prototype pattern lets you clone a prototype instead of asking a factory method to make a new object. Configurando uma aplicação com classes dinamicamente. Desvantagem: Cada subclasses necessita implementar a operação de Clonar m que pode ser complicada se incluir objetos que não suportam copia ou que possuem referencias circulares. © LES/PUC-Rio

Exemplo Referência : http://www.guj.com.br/content/articles/patterns/prototype_pattern_guj.pdf © LES/PUC-Rio

Exemplo public class Application { public static void main(String[] args) { ProductCache.loadCache(); Book clonedBook = (Book) ProductCache.getProduct("B1"); DVD clonedDVD = (DVD) ProductCache.getProduct("D1"); } public abstract class Product implements Cloneable{ public Object clone() { Object clone = null; try { clone = super.clone(); } catch {} return clone; } public class Book extends Product { private int numberOfPages; public int getNumberOfPages() { return numberOfPages; } public void setNumberOfPages(int i){ numberOfPages = i; } } public class ProductCache { private static Hashtable productMap = new Hashtable(); public static Product getProduct(String productCode{ Product cachedProduct = (Product) productMap.get(productCode); return (Product) cachedProduct.clone(); } public static void loadCache() { // for each product run expensive query and instantiate product // productMap.put(productKey, product); products Book b1 = new Book(); productMap.put(b1.getSKU(), b1); DVD d1 = new DVD(); productMap.put(d1.getSKU(), d1); } } public class DVD extends Product { private int duration; public int getDuration() { return duration; } public void setDuration(int i) { duration = i; } } © LES/PUC-Rio