Padrões de Projeto. Abstract Factory

Documentos relacionados
Padrões de Projeto de Software

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

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

Padrões de Projeto de Software Orientado a Objetos

Abstract Factory. Edeyson Andrade Gomes

Abstract Factory Pattern

Padrões de Projeto. Factory Method

Padrões de Projeto. Factory Method

Notação de Classes e Objetos

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

Padrões de Projeto de Software Orientado a Objetos

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

Orientação a Objetos Classes Abstratas

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

INF011 Padrões de Projeto. 05 Factory Method

Creational Patterns Factory method

INF011 Padrões de Projeto. 02 Creational Patterns

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

Padrões Fábrica. Simple Factory Factory Method

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

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

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

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

Computação II Orientação a Objetos

Classe Abstrata e Interface

Frameworks. Viviane Torres da Silva

Padrões de Projeto de Software

INF011 Padrões de Projeto. 10 Bridge

As classes Formatador e ElementosAFormatar

Classes e Objetos. Sintaxe de classe em Java

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

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

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 II Orientação a Objetos

Linguagem de Programação III

Mas o que é mesmo Padrão de Projeto?

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

Diagramas de Sequência Exemplo

Interfaces e Classes Abstratas

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Técnicas para Reutilização de Software

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

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

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

Structural Patterns - Bridge

A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. História da UML. O que é modelagem?

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

Arquitetura de Software

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

Modificadores de Acesso JAVA

Prof. Fábio Lúcio Meira

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

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

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

Avançando em Java com

Orientação a Objetos Interfaces

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

Requisitos de sistemas

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Engenharia de Software

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

Alguns Exercícios Resolvidos

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

Ferramenta 1 -NetBeans 8.0

Visões Arquiteturais. Visões Arquiteturais

Sistemas Operacionais II

Arquitectura de Sistemas 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

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

Arquiteturas de Redes de Computadores Os Modelos RM-OSI e TCP/IP. Prof. M.e Helber Wagner da Silva

Os princípios do desenho orientado a objetos

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

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

HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP

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

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

Banco de Dados. SGBD - Sistema de Gerenciamento de Banco de Dados Parte 1. Prof. Leonardo Vasconcelos

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Frameworks. SSC-526 Análise e Projeto Orientados a Objeto Profa. Dra. Elisa Yumi Nakagawa 2º semestre de 2013

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

Engenharia de Software Aula 2.1 Introdução à Engenharia de Requisitos. Prof. Bruno Moreno

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Padrões Comportamentais

Modelagem de Sistemas Web. Modelagem de BD

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

Computação II Orientação a Objetos

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

Programação Orienta a Objetos

Implementação de um Sistema de Objetos Remoto baseado em Java RMI. Ricardo Couto Antunes da Rocha INF/UFG

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

Computação II Orientação a Objetos

UnoTech Soluções em Histórico da Revisão Data Versão Descrição Autor 27/05/ 1.0 Construção do Documento Carlos GG Flor Página 2

Transcrição:

Padrões de Projeto Padrões de Criação Abstract Factory Prof. Eduardo N F Zagari Prof. Ivan Granja Abstract Factory Provê uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas Mesmo conceito de Method Factory, porém um nível de abstração acima Pode ser implementado, em Java, tanto como interface como com classe abstrata Também conhecido como Kit 2 1

Motivação 3 Motivação Considere uma interface de usuário que suporte múltiplos look-and-feel. Para ser portável, uma aplicação não deveria se referir aos elementos (widgets) de um padrão particular de forma hard-code Solução: WidgetFactory uma interface para criar cada tipo básico de elementos Uma classe abstrata para cada tipo de widget Uma subclasse concreta para cada padrão distinto Clientes usam a WidgetFactory e não têm conhecimento das classes que implementam widgets particulares WidgetFactory assegura também consistência entre classes 4 2

Aplicação Use Abstract Factory 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 5 Aplicação Deseja-se criar instâncias de um conjunto de classes relacionadas, sem que se saiba qual classe factory concreta deve ser instanciada. Na falta de uma classe abstrata, o cliente deve manter um critério de seleção para selecionar qual das interfaces disponíveis deve ser usada, em tempo de execução. Ajuda a evitar duplicação de interfaces para criação das instâncias, eliminado a necessidade da classe cliente ter que conhecer diversas interfaces para as diversas classes concretas. 6 3

Estrutura 7 Participantes AbstractFactory (WidgetFactory) Declara uma interface para operações que criam objetos-produto abstratos ConcreteFactory (MotifWidgetFactory, PMWidgetFactory) Implementa as operações para criar objetos-produto concretos AbstractProduct (Window, ScrollBar) Declara uma interface para um tipo de objeto-produto 8 4

Participantes ConcreteProduct (MotifWindow, MotifScrollBar) Define um objeto-produto a ser criado pela fábrica concreta correspondente Implementa a interface AbstractProduct Cliente Usa somente as interfaces declaradas pelas classes AbstractFactory e AbstractProduct 9 Colaborações 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. 10 5

Conseqüências 1. Isola classes concretas 2. Facilita a permuta de famílias de produtos 3. Promove consistência entre produtos 4. Dificulta o suporte a novos tipos de produtos 11 Exemplo II Car SUV ver Código Java (Workspace) 6

Exemplo III Manutenção de Dados de Clientes Validar e salvar os dados de entrada de um cliente (conta, endereço e cartão) Aplicação deve rodar local e remotamente No modo remoto, deve fazer uso dos objetos remotos por meio de RMI e salvar os dados no servidor central. Permanecer funcionado quando o servidor remoto estiver fora do ar Sincronização entre servidor local e central é parte de outra aplicação específica para isso. Diagrama de Pacotes 7

Visão Interna dos pacotes Visão Interna dos pacotes 8

Visão Interna dos pacotes Visão Interna dos pacotes 9

Visão Interna dos pacotes Visão Geral 10

Diagrama de Seqüência Implementação Fábricas geralmente são melhor implementadas como Singletons AbstractFactory deve apenas declarar uma interface para a criação de produtos. É necessário haver uma fábrica concreta (eventualmente, uma para cada famíla de produtos) Definir fábricas extensíveis a novos tipos de produtos: acrescentar parâmetro às operações que criam objetos 22 11

Exemplo 23 Exemplo 24 Livro Texto: Design Pattern - Elements of Reusable OO Software - Gamma 12

Exemplo Para criar um labirinto com cômodos encantados, basta fazer subclasse de MazeFactory. 25 Exemplo 26 13

Exemplo Para criar um labirinto que contenha cômodos encantados, basta chamar CreateMaze com um EnchantedMazeFactory: MazeGame game; EnchantedMazeFactory factory; game.createmaze(factory); 27 Exemplo Agora, suponha que se queira fazer um labirinto no qual o cômodo pode ter uma bomba e a parede pode ser/estar danificada por ela. Deve-se fazer subclasses novamente, sobrescrevendo os dois métodos... 28 14

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

Notas Note que MazeFactory é apenas uma coleção de métodos fábrica Note também que ela é tanto uma AbstractFactory como uma ConcreteFactory Se um RoomWithABomb tiver que acessar um membro de um BombedWall, então ele deveria fazer um cast da referência de Wall * para BombedWall * (o que é seguro!!!) 31 16