Padrões de Projeto de Software

Documentos relacionados
Padrões de Projeto. Abstract Factory

INF011 Padrões de Projeto. 03 Abstract Factory

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

Abstract Factory. Edeyson Andrade Gomes

Padrões de Projeto de Software Orientado a Objetos

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

Padrões de Projeto de Software

Notação de Classes e Objetos

Abstract Factory Pattern

Padrões de Projeto de Software

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

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

INF011 Padrões de Projeto. 10 Bridge

Creational Patterns Factory method

Padrões de Projeto de Software Orientado a Objetos

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method

INF011 Padrões de Projeto. 05 Factory Method

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

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

Padrões Fábrica. Simple Factory Factory Method

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

Padrões de Projeto de Software

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

Structural Patterns - Bridge

INF011 Padrões de Projeto. 04 Builder

Linguagem de Programação III

Classe Abstrata e Interface

As classes Formatador e ElementosAFormatar

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

INF011 Padrões de Projeto. 02 Creational Patterns

Frameworks. Viviane Torres da Silva

LEIC-T LERC MEIC-T 2011/2012 1º Semestre Programação com Objetos 2012/01/07 11h00m 3/10

Computação II Orientação a Objetos

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

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

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

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

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

Computação II Orientação a Objetos

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

Lição 11 Herança, polimorfismo e interfaces

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 Avançados em Linguagem de Programação. Builder. Builder. Builder. Classificação: Padrões de Projeto. Builder Pattern.

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

O PARADIGMA ORIENTADO POR OBJETOS

4.6. UML Diagramas de componentes

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

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

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos

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

Mas o que é mesmo Padrão de Projeto?

Padrões Comportamentais

Análise e Projeto Orientados por Objetos

Reúso de Software. Adaptado de. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 18 Slide by Pearson Education

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

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

Avançando em Java com

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Classes e Objetos. Sintaxe de classe em Java

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

DESIGN PATTERNS. Como evitar problemas no futuro

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos 2 Prof. Fabiano Dorça. Padrões de Projeto.

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

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

9 Classes Abstractas e Interfaces

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Implementação de Padrões de Projeto em Java e AspectJ

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Orientação a objetos. Objetos ou Instâncias I

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Computação II Orientação a Objetos

Frameworks. Profa. Dra. Rosana Teresinha Vaccare Braga. Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo

Orientação a Objetos Classes Abstratas

ALUNO: RONI FABIO BANASZEWSKI

Diagramas de Sequência Exemplo

Engenharia de Software

M e d iator. Padrões de Projeto. Mediator. Prof. Alexandre Vidal DEINF-UFMA. M e di a t or

Observer. Edeyson Andrade Gomes

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

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

ACH2002. Orientação a Objetos

Herança e Polimorfismo

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Introdução à Análise e Projeto de Sistemas

Usuários. Interface com Usuários. Programa Aplicativo. Interfaces de Programação. Sistema Operacional

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

Interfaces e Classes Abstratas

PCS3413 Engenharia de Software e Banco de Dados

Conceitos de Programação Orientada a Objetos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Engenharia de Software

Programação por Objectos Introdução. Introdução 1/18

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

Java para Desktop. Programação Orientada à Objetos 2 JSE

Transcrição:

Padrões de Projeto de Software Abstract Factory Paulo Gomide Departamento de Ciência da Computação Universidade de Itaúna

Sumary Abstract Factory Definição, Motivação e Aplicabilidade Estrutura, Elementos do Padrão e Colaborações Consequências Consequências Alternativas e Dicas de Implementação Código de Exemplo Padrões Relacionados

Abstract Factory Definição Provê uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas Também conhecido como Kit

Motivação para o Padrão Motivação Considere a implementação de um toolkit que disponibilize controles que funcionem em diferentes interfaces gráficas. Para ser portável, a aplicação não deveria se referir diretamente aos elementos (widgets) de um padrão de controle particular. Solução: WidgetFactory - interface para criar cada tipo básico de GUI; Uma classe abstrata para cada tipo de widget; Subclasse concreta para cada padrão distinto; Clientes usam a WidgetFactory e não têm conhecimento das classes concretas que implementam widgets particulares; WidgetFactory assegura consistência entre classes concretas.

Estrutura do Problema Específico

Aplicabilidade Requisitos para se Aplicar o Padrão O uso do padrão Abstract Factory é indicado quando: O sistema deve ser independente de como seus produtos são criados, compostos e representados O sistema deve ser configurado com uma ou com múltiplas famílias de produtos Uma família de objetos de produtos relacionados é projetada para ser usada de forma conjunta e você deva garantir esta restrição Você quer prover uma biblioteca de classes de produtos e quer revelar apenas suas interfaces e não suas implementações

Estrutura do Problema Geral

Cliente Participantes do Padrão Implementa a interface AbstractProduct; Usa somente as interfaces AbstractFactory e AbstractProduct. AbstractFactory Declara uma interface para a criação de objetos-produto abstratos; Ex.: WidgetFactory. ConcreteFactory Implementa as operações para criar objetos-produto concretos; Ex.: MotifWidgetFactory e QTWidgetFactory.

Participantes AbstractProduct Declara uma interface para um tipo de objeto-produto; Ex.: Window e ScrollBar. ConcreteProduct Define um objeto-produto a ser criado pela sua fábrica concreta correspondente; Implementa a interface AbstractProduct; Ex.: MotifWindow e MotifScrollBar

Colaborações Principais Contribuição do Padrão AbstractFactory delega a criação de objetos-produto a suas subclasses ConcreteFactory; Normalmente uma única instância da classe ConcreteFactory é criada; Para criar objetos-produto diferentes, os clientes devem usar uma fábrica concreta diferente.

Conseqüências Vantagens 1. Isola classes concretas: Uma AbstractFactory encapsula a criação de objetos de produtos; Isola clientes das classes de implementação; O cliente manipula instâncias através de suas interfaces abstratas. 2. Facilita o câmbio de famílias de produtos: A ConcreteFactory só aparece em um lugar: onde ela é instanciada; Uma mudança numa única linha de código pode ser suficiente para mudar a ConcreteFactory que a aplicação usa; A família inteira de produtos muda de uma vez.

Vantagens Conseqüências 1. 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. Desvantagens 1. Dificulta o suporte a novos tipos de produtos O motivo é que a AbstractFactory 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 AbstractFactory e em todas suas subclasses ConcreteFactory;

Alternativas e Dicas de Implementação Implementação do Padrão 1. Fábricas geralmente são melhor implementadas como Singletons; 2. AbstractFactory apenas declara a interface para a criação de produtos; 3. Deve uma fábrica concreta (ou uma para cada famíla de produtos); 4. Definir fábricas extensíveis.

Código de Exemplo

Código de Exemplo

Código de Exemplo Para implementar um labirinto que contenha cômodos encantados, basta fazer subclasse de MazeFactory:

Exemplo Para criar um labirinto que contenha cômodos encantados, basta chamar CreateMaze com um EnchantedMazeFactory:

Exemplo Para implementar um labirinto no qual um cômodo ou uma porta pode ter uma bomba, basta fazer subclasses novamente, sobrescrevendo os dois métodos:

Exemplo Para criar um labirinto que contenha bombas, basta chamar CreateMaze com um BombedMazeFactory

Exemplo

Padrões Relacionados Factory Method As principais semelhanças são: Em vez do cliente chamar um método de criação (Factory Method), ele possui um objeto (Abstract Factory) e usa este objeto para chamar os métodos de criação. Factory Method quer que você seja diferente (via herança) para criar objetos diferentes, o Abstract Factory quer que você tenha algo diferente

Obrigado pela atenção! Dúvidas?