INF011 Padrões de Projeto. 03 Abstract Factory

Documentos relacionados
Padrões de Projeto de Software

Padrões de Projeto. Abstract Factory

INF011 Padrões de Projeto. 05 Factory Method

Abstract Factory. Edeyson Andrade Gomes

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto. Parte 1. Prof. Fellipe Aleixo

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

INF011 Padrões de Projeto. 10 Bridge

Notação de Classes e Objetos

INF011 Padrões de Projeto. 04 Builder

INF011 Padrões de Projeto. 11 Composite

Padrões de Projeto. Factory Method

INF011 Padrões de Projeto. 21 Memento

Factory Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

Abstract Factory Pattern

Creational Patterns Factory method

INF011 Padrões de Projeto Introdução

Padrões de Projeto de Software Orientado a Objetos

Padrões GoF Strategy, Observer, Singleton, Abstract Factory e outros...

Padrões Fábrica. Simple Factory Factory Method

Programação Orientada a Objetos. Padrões de Criação

Padrões de Design. Padrões de Design. Abstract Factory. Padrões de Design. Padrões de Design Abstract Factory. Abstract Factory.

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Introdução aos Padrões de Projeto. Sylvio Barbon Jr

As classes Formatador e ElementosAFormatar

Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO002 Engenharia de Software

INF011 Padrões de Projeto. 02 Creational Patterns

Classes e Objetos. Sintaxe de classe em Java

Padrões de Projeto. Factory Method

Singleton. Como a maioria dos programadores organizaria o código para acessar informação de configuração? Eis um exemplo:

" ##$#$!% # & #$#$ !!!!"!

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Padrões de Projeto. Intenção: Observer. Motivação: Motivação:

Padrões de Projeto. Padrões de Projeto. Além dos 23 Padrões GoF. Os 23 Padrões de Projeto. Documentação de um Padrão. Classificação dos Padrões

Curso - Padrões de Projeto Módulo 2: Padrões de Criação

T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Padrões de Projeto. Prof. Alexandre Vidal. DEINF-UFMA Janeiro de 2007

Análise e Projeto Orientados por Objetos

Programação Orientada a Objetos. Padrões Estruturais

Linguagem de Programação III

Padrões de Projeto de Software

Sumário. Prefácio 12. Capítulo 1 - Técnicas Simples Para um Código Limpo 23

Computação Paralela. Conceitos de Programação Orientada ao Objecto. João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

Análise e Projeto Orientados por Objetos

INF011 Padrões de Projeto. 15 Proxy

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Conceitos de Programação Orientada ao Objecto

Structural Patterns - Bridge

ALUNO: RONI FABIO BANASZEWSKI

Computação II Orientação a Objetos

Padrões de Projeto de Software

Computação II Orientação a Objetos

Interfaces Gráficas com Swing. Professor Leonardo Larback

Padrões de Projeto de Software

INF016 Arquitetura de Software 08 - Implementação

LSCAD André Luiz junho ModelSim-Altera 6.6d

a determinadas condições de uso. Este mecanismo permite, ainda, a integração de domínios externos. A descrição da interface é feita de forma

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Padrão de Desenho Assassino em Série. Marcos Eduardo Bolelli Broinizi Peter Kreslins Junior

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates

Tópicos Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern.

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL

Desenvolvimento de Aplicações Desktop

ENGENHARIA DE SOFTWARE. Aula 17 Reuso de software

Programação Orientada a Objetos II Java Décima primeira aula

Diagramas de Sequência Exemplo

Computação II Orientação a Objetos

Orientação a Objetos

Padrões Comportamentais

Análise. Orientada a Objetos Modelo Funcional, Modelo Estrutural e Modelo Comportamental. Linguagens: Java, C++, etc.

Capítulo 3. Framework 28

Métodos formais. Especificação Formal. Aceitação de métodos formais. O uso de métodos formais. Especificação e projeto

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 1- Interfaces Gráficas com Swing

Utilizando linguagens de programação orientadas a objetos para codificar programas adaptativos

Padrões de Projeto. B r i dge. B r i d ge. T ó p i c o s A v a n ç a d o s e m L i n g u a g e m d e P r o g r a m a ç ã o. Classificação: Intenção:

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

Tem métodos e estado Pode ser implementado por um ou mais objetos de uma linguagem de programação como C++ ou Java

Orientação a Objetos

Classe Interna (Inner)

Estilo: BlackBoard. BlackBoard = repositório de dados compartilhados

Computação II Orientação a Objetos

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Introdução a classes e objetos. Copyright 2006 by Pearson Education

Classes e Objetos POO

Computação II Orientação a Objetos

Padrões de Design Orientado a Objetos Design Patterns. Jorge H. C. Fernandes DI-UFPE, Junho de 1999

Capítulo 2. Orientação a Objetos

RAFAEL EMMENDOERFER FALCONE MAURO MARCELO MATTOS

Aula 3. Encapsulamento e Funções de acesso

S.Ha.R.K OS. (Soft Hard Real-time Kernel) Tiago Varum Ruben Gonçalves 35736

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

VB.NET - Orientação a objetos : conceitos básicos em 10

Arquitectura de Sistemas de Software

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

4 ALBATROZ : Um ambiente para desenvolvimento de SMA

Frameworks. Viviane Torres da Silva

Transcrição:

INF011 Padrões de Projeto 03 Abstract Factory Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica em Análise e Desenvolvimento de Sistemas

Propósito: Disponibilizar uma interface para a criação de famílias de objetos dependentes ou relacionados sem especificar suas classes concretas Também conhecido como: Kit Motivação: GUI com suporte a múltiplos look-and-feel. A aplicação não deve ter um look-and-feel particular hard-coded O Abstract Factory define uma classe abstrata WidgetFactory com interfaces para a criação de cada tipo básico de widget Define também uma classe abstrata para cada widget

Motivação: Uma sub-classe concreta para cada look-and-feel, implementando as operações de criação dos widgets apropriados

Aplicabilidade: O sistema precisa ser independente de como os produtos são criados, compostos e representados O sistema deve ser configurado com uma de múltiplas famílias de produtos Produtos de uma família devem ser sempre utilizados em conjunto e isto precisa ser garantido Deseja-se disponibilizar uma biblioteca de classes de produtos mas revelar somente as suas interfaces, não suas implementações

Estrutura:

Participantes: AbstractFactory: declara uma interface para operações que criam objetos produto abstratos ConcreteFactory: implementa as operações para criar objetos produto concretos AbstractProduct: declara uma interface para um tipo de objeto produto ConcreteProduct: define o objeto produto a ser criado pela fábrica concreta correspondente e implementa a interface AbstractProduct

Colaborações: Normalmente uma única instância de fábrica concreta é criada em run-time. Esta fábrica cria produtos com uma implementação em particular. Para criar outros produtos deve-se utilizar uma fábrica diferente As classes abstratas transferem a responsabilidade de criação dos objetos produto para as suas sub-classes

Consequências: Isola as classes concretas: Ele controla as classes dos objetos que a aplicação cria. Clientes manipulam instâncias somente através de suas interfaces abstratas. Nomes de classes estão isolados nas fábricas concretas, eles não aparecem no código do cliente Torna fácil a troca de famílias de produtos: A classe da fábrica concreta sendo utilizada aparece somente uma vez na aplicação, facilitando modificações. A família de produtos mudaria toda de uma vez

Consequências: Promove consistência entre produtos: Garante que os objetos utilizados são todos de uma mesma família, representada pela fábrica concreta sendo utilizada Dificulta a inserção de novos tipos de produtos: A interface da fábrica abstrata torna fixo o conjunto de produtos que podem ser criados Suportar um novo produto exige a extensão da interface da fábrica abstrata e a modificação de todas as suas sub-classes

Implementação: Fábricas como Singletons: Geralmente precisa-se de somente uma instância da fábrica concreta por aplicação Criando os produtos: A fábrica abstrata somente define uma interface para criação de produtos, geralmente através de um Factory Method para cada produto As fábricas concretas implementam esses Factory Methods para instanciar os objetos A implementação é simples, mas requer uma fábrica concreta para cada família de produtos, mesmo que elas sejam ligeiramente diferentes

Implementação: Criando os produtos: Se estão previstas muitas famílias, a fábrica concreta pode ser implementada usando o padrão Prototype Teríamos apenas uma fábrica concreta, inicializada com os protótipos dos produtos desejados Uma outra variação é utilizar meta-classes, se disponíveis na linguagem

Implementação: Definindo fábricas extensíveis: Na fábrica abstrata, os tipos de produtos fazem parte das assinaturas dos Factory Methods. Adicionar um novo produto requer mudar a interface da fábrica abstrata e de todas as classes dela dependentes Uma solução mais flexível porém menos segura é adicionar um parâmetro ao Factory Method indicando o tipo de produto a ser criado A fábrica abstrata (e concreta) teria somente um Factory Method Entretanto, visto que os produtos deverão ter a mesma classe-base, o cliente os enxergará de uma única maneira, sem distinguir os tipos dos produtos

Código exemplo:

Código exemplo:

Código exemplo:

Código exemplo salas com bombas:

Código exemplo observações: Note que a fábrica abstrata é uma coleção de Factory Methods e que não necessariamente precisa ser uma classe abstrata. Ela pode atuar como fábrica abstrata e concreta ao mesmo tempo Se a fábrica BombedMazeFactory for utilizada, o labirinto será formado por objetos RoomWithABomb e BombedWall: Objetos do tipo RoomWithABomb podem precisar acessar métodos específicos de BombedWall, portanto será necessário realizar downcasting Este downcast é seguro desde que todas as paredes sejam construídas pela mesma fábrica, o que é garantido pelo padrão

Usos conhecidos: InterViews: toolkit para interfaces gráficas de usuário ET++: utiliza Abstract Factory para garantir portabilidade entre diferentes sistemas de janelas (X Windows, Sun View, etc)

Padrões relacionados: O Abstract Factory é geralmente implementado com Factory Methods, mas também pode utilizar o Prototype Uma fábrica concreta é frequentemente um Singleton

INF011 Padrões de Projeto 03 Abstract Factory Sandro Santos Andrade sandroandrade@ifba.edu.br Instituto Federal de Educação, Ciência e Tecnologia da Bahia Departamento de Tecnologia Eletro-Eletrônica Graduação Tecnológica em Análise e Desenvolvimento de Sistemas