Projeto de Sistemas de Software

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Classes Abstratas e Interfaces
Java – Classes Abstratas
Chain of Responsibility
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Factory Method Projeto de Sistemas de Software
Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
1 Builder Padrões de projeto Projeto de Sistemas de Software Aleksander Bruno Gadelha Setembro, 2008.
Projeto de Sistemas de Software Fernando de Freitas Silva
Projeto de Sistemas de Software
Projeto de Sistemas de Software Fernando de Freitas Silva
Padrões de Projeto Prototype.
Juliana França Santos Aquino
Abstract Factory – Gustavo Lopes Mourad.
Padrão Abstract Factory
Java: Pacotes e Modificadores de Visibilidade
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
Abstract Factory Intenção: fornecer uma interface comum para a criação de famílias de objetos relacionados ou dependentes, sem especificar suas classes.
Singleton.
Padrões GoF – Factory Method
Polimorfismo e Classes Abstratas Profa
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Clique para editar o estilo do subtítulo mestre Desenvolvimento web com Java JAVA 5 – Declarações e Controles de Acesso.
Classes e objetos P. O. O. Prof. Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
CURSO DE ESPECIALIZAÇÃO PARTE 4: PADRÕES FACTORY E DAO
Strategy e Template Method
Programação Orientada a Objetos com Java
Professor: Hyggo Almeida
Nazareno Andrade (baseado no material de Hyggo Almeida)
Padrões de projeto detalhados Factory Method, Abstract Factory
Singleton e Adapter Professor: Nazareno Andrade
JAVA Orientação a Objetos
Padrão de Projeto Visitor
JAVA Linguagem Ambiente de Desenvolvimento
Linguagens Orientadas a Objeto
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Atributos, Encapsulamento e Interface em Java
Paulo Borba Centro de Informática Universidade Federal de Pernambuco Classes Abstratas e Interfaces.
Os métodos equals() e hashCode()
Orientação a Objetos e Java Graduação em Ciência da Computação
Pilhas Profa. Nádia Félix.
Programação Orientada à Objetos
Wagner Santos C. de Jesus
Implementação Orientada a Objetos – Aula 03
Tratamento de Exceções
Prof. Gilberto Irajá Müller
Introdução às Java Threads
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Polimorfismo.
Classes Abstratas e Interface
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Padrões de Projeto Abstract Factory.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Factory.
Abstract Factory Pattern Algumas aplicações precisam criar objetos de classes que podem mudar ex: elementos de um sistema GUI. –Diferentes padrões precisam.
April 05 Prof. Ismael H. F. Santos - 1 Módulo III Padrões GOF: AbstractMethod Professores Eduardo Bezerra –
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 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 (na prática) Créditos: Lúbia Vinhas Hazel Carvalho Crato Adaptações: Prof. Nécio de Lima Veras.
Transcrição da apresentação:

Projeto de Sistemas de Software Abstract Factory Padr ões de projeto Bruno Freitas Gadelha Setembro, 2008

Abstract Factory Propósito Motivação Aplicabilidade Estrutura Participantes Colaborações Consequências Exemplo

Abstract Factory Propósito Prover uma interface para criar uma família de objetos relacionados ou dependentes sem especificar suas classes concretas

Abstract Factory Motivação Montadoras de carros Gerador de documentos Diferentes modelos Diferentes acessórios Gerador de documentos Diferentes documentos (textos, planilhas, apresentacoes) Diferentes estilos de documentos (cartas de recomendação, curriculos, etc.)

Abstract Factory Aplicabilidade Um sistema deve ser independente de como seus produtos sao criados, compostos e representados Um sistema deve ser configurado como um de múltiplas famílias de produtos

Abstract Factory Estrutura

Abstract Factory Participantes AbstractFactory: Declara uma interface para a criação de objetos abstratos. ConcreteFactory: Implementa as operações que criam objetos concretos. AbstractProduct: Declara uma interface para um tipo de objeto. ConcreteProduct: Define um objeto a ser criado pela fábrica concreta correspondente e implementa a interface de AbstractProduct. Client: Utiliza somente as interfaces declaradas pelas classes AbstractFactory e AbstractProduct.

Abstract Factory Colaborações Normalmente uma única instância de uma classe FactoryConcreta é criada em tempo de execução. Essa FactoryConcreta cria objetos tendo uma implementação particular. Para criar produtos diferentes, clientes devem usar uma FactoryConcreta diferente. FactoryAbstrata depende de suas subclasses FactoryConcreta para criar objetos de produtos

Abstract Factory Consequências O padrão isola classes concretas Uma factory encapsula a responsabilidade e o processo de criação de objetos de produtos Isola clientes das classes de implementação O cliente manipula instâncias através de suas interfaces abstratas Facilita o câmbio de famílias de produtos A classe da FactoryConcreta só aparece em um lugar: onde ela é instanciada Uma mudança numa única linha de código pode ser suficiente para mudar a FactoryConcreta que a aplicação usa A família inteira de produtos muda de uma vez

Abstract Factory Consequências Promove a consistência entre produtos Produtos de uma determinada família devem funcionar conjuntamente e não misturados com produtos de outra família O padrão permite implementar esta restrição com facilidade Do lado negativo: dar suporte a novos tipos de produtos é difícil O motivo é que a FactoryAbstrata fixa o conjunto de produtos que podem ser criados Dar suporte a mais produtos força a extensão da interface da factory o que envolve mudanças na FactoryAbstrata e em todas suas subclasses FactoryConcreta

Abstract Factory Exemplo ProdutoAbstrato ProdutoA1 public abstract class Document { protected String content; public String getContent() { return content;} public abstract String getTemplate(); public abstract String getType(); } ProdutoA1 public class SimpleLetterDocument extends Document{ public String getTemplate(){ // conteúdo para retornar o template deste tipo de documento} public String getType(){ return “Simple Letter”; } }

Abstract Factory Exemplo ProdutoA2 ProdutoB1 public class ProfessionalLetterDocument extends Document{ public String getTemplate(){ // conteúdo para retornar o template deste tipo de documento } public String getType(){ return “Pro Letter”;} } ProdutoB1 public class SimpleSpreadSheetDocument extends Document{ public String getTemplate(){ … } public String getType(){ return “Simple Spreadsheet”;} }

ConcreteFactory p/ cartas Abstract Factory Exemplo ProdutoB2 public class FancySpreadSheetDocument extends Document{ public String getTemplate(){…} public String getType() { return “Fancy Spreadsheet”; } } ConcreteFactory p/ cartas public class LetterFactory{ public static Document getLetter(String style){ if(”simple”.equals(style)) { return new SimpleLetterDocument(); } if(”pro”.equals(style)) { return new ProfessionalLetterDocument();} else return null; }

ConcreteFactory p/ planilhas Abstract Factory Exemplo ConcreteFactory p/ planilhas public class SpreadSheetFactory{ public static Document getSpreadSheet(String style){ if(”simple”.equals(style)) {return new SimpleSpreadSheetDocument();} if(”fancy”.equals(style)) {return new FancyLetterDocument();} else return null; } AbstractFactory public class DocumentFactory{ public Document getDocument(String type, String style){ if(”letter”.equals(type)) {return LetterFactory.getLetter(style);} if(”spreadsheet”.equals(type)) {return SpreadSheetFactory.getSpreadSheet(style);} }

Abstract Factory Exemplo Client public class Cliente{ public static void main(String[] args){ Document letter1 = DocumentFactory.getDocument(”letter”, “simple”); Document letter2 = DocumentFactory.getDocument(”letter”, “pro”); Document sp1 = DocumentFactory.getDocument(”spreadsheet”, “simple”); Document sp2 = DocumentFactory.getDocument(”spreadsheet”, “pro”); System.out.println(letter1.getType()); // Simple Letter System.out.println(letter2.getType()); // Pro Letter System.out.println(sp1.getType()); // Simple Spreadsheet System.out.println(sp2.getType()); // Fancy Spreadsheet }