INF011 Padrões de Projeto. 10 Bridge

Documentos relacionados
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:

Structural Patterns - Bridge

INF011 Padrões de Projeto. 03 Abstract Factory

INF011 Padrões de Projeto. 05 Factory Method

INF011 Padrões de Projeto. 04 Builder

Padrões de Projeto. 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. Prof. Alexandre Vidal

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

INF011 Padrões de Projeto. 11 Composite

Abstract Factory. Edeyson Andrade Gomes

Padrões de Projeto de Software

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 Introduçã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

INF011 Padrões de Projeto. 15 Proxy

INF011 Padrões de Projeto. 21 Memento

Creational Patterns Factory method

POO e C++: Herança e Polimorfismo

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

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

Classe Abstrata e Interface

Padrões de Projeto de Software

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

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

Padrões de Projeto. Abstract Factory

Mas o que é mesmo Padrão de Projeto?

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

Análise e Projeto Orientados por Objetos

Capítulo 2. Orientação a Objetos

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

INF016 Arquitetura de Software 08 - Implementação

Análise e Projeto Orientados por Objetos

LINGUAGEM DE PROGRAMAÇÃO

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

Requisitos de sistemas

Padrões de Projeto de Software Orientado a Objetos

INF016 Arquitetura de Software 01 - Introdução

Arquitetura de Software Parte 1/3 Introdução* Jorge H. C. Fernandes Junho de 1999

Conceitos de Programação Orientada a Objetos

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

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

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

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

Notação de Classes e Objetos

Orientação a Objetos Interfaces

Padrões de Projeto de Software

6 Implementação do iph

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

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

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

Padrões Comportamentais

Classes e Objetos. Sintaxe de classe em Java

Herança Tiago Eugenio de Melo

As classes Formatador e ElementosAFormatar

Interfaces Gráficas com Swing. Professor Leonardo Larback

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

Padrões de Projeto. Factory Method

Padrões Comportamentais

Administração de Sistemas GNU/Linux

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

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

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

Padrões Fábrica. Simple Factory Factory Method

Etapas principais do desenvolvimento de software Padrões arquiteturais Padrões de projeto

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

Introdução ao Java. Prof. Herbert Rausch Fernandes

3 Trabalhos relacionados

Observer. Edeyson Andrade Gomes

PADRÕES DE DESENVOLVIMENTO DE SOFTWARE: UM ESTUDO DE CASO

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

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

Programação II. Cassio Diego

Desenvolvimento de Aplicações Desktop

POO29004 Programação Orientada a Objetos

Tópicos Especiais em Redes de Telecomunicações

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

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

Orientação a Objetos Classes Abstratas

Visibilidade e Encapsulamento

Padrões de Projeto de Software

Factory Method. Edeyson Andrade Gomes

1) DADOS DA OBRA: Programando em Java 2 Teoria e Aplicações Rui Rossi dos Santos 2004 Axcel Books (

Structural Patterns - Adapter

Princípios de Engenharia de Software Resumo 8 Semana 8 Versão: 1.0 Data: 05/10/04

O PARADIGMA ORIENTADO POR OBJETOS

Engenharia de Software

Prof. Msc. Vladimir Camelo

Interfaces e Classes Abstratas

Computação II Orientação a Objetos

Computação II Orientação a Objetos

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

Computação II Orientação a Objetos

Software Básico. Silvio Fernandes Aula 15: Carregamento dinâmico

2º Grupo Capitulo 11 Página 517 a 530 Camada do Núcleo a Manipuladores. Alunos Wanderson da Silva Serradilha Sérgio Vilela Maia Rúlio Márcio

Programação por Objectos. Java

Daniel Ribeiro Trindade

COMPARTILHAMENTO DE PASTAS DE

Sistemas Operacionais

Transcrição:

INF011 Padrões de Projeto 10 Bridge 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: Desacoplar uma abstração de sua implementação de modo que os dois possam variar de forma independente Também conhecido como: Handle/Body Motivação: Quando uma abstração pode ter várias implementações geralmente define-se uma interface e deriva-se classes concretas com diferentes implementações Entretanto, a herança define uma dependência permanente, tornando difícil modificar, estender e reutilizar abstrações e implementações de forma independente

Motivação: Exemplo: implementação da classe Window de um toolkit portável para interfaces gráficas de usuário As aplicações devem funcionar tanto no X Window quanto no Presentation Manager 1 a solução: classe abstrata Window e sub-classes XWindow e PMWindow

Motivação: 1 a solução: problemas Grande número de classes

Motivação: 1 a solução: problemas O código do cliente é dependente de plataforma. Sempre que for necessário criar uma janela uma classe concreta com implementação específica será instanciada: Window *w = new XWindow; Clientes devem poder criar uma janela sem nenhum comprometimento com implementações concretas

Motivação: Todas as operações das sub-classes de Window são implementadas em termos de operações abstratas da interface WindowsImpl

Aplicabilidade: Deseja-se evitar uma ligação permanente entre uma abstração e sua implementação Deseja-se estender tanto a abstração quanto a implementação através de sub-classes Deseja-se que mudanças na implementação da abstração não gerem impactos nos clientes Quando existe uma proliferação de classes, geralmente indicando a necessidade de divisão de um objeto em dois Deseja-se compartilhar uma implementação entre múltiplos objetos e este fato deve estar escondido dos clientes

Estrutura:

Participantes: Abstraction (Window): define a interface da abstração e mantém uma referência para o objeto da implementação RefinedAbstraction (IconWindow): estende a interface definida por Abstraction Implementor (WindowImpl): define a interface das classes de implementação. Geralmente esta interface contém somente operações primitivas, enquanto a interface da abstração define operações de nível mais alto, baseadas nas primitivas da interface de implementação ConcreteImplementor (XWindowImpl, PMWindowImpl): implementa a interface do Implementor e define sua implementação concreta

Colaborações: O Abstraction repassa as requisições dos clientes para o objeto Implementor

Consequências: Desacopla interface da implementação: A implementação não fica mais permanentemente amarrada à interface. A implementação da abstração pode ser informada em run-time Também elimina dependências em tempo de compilação: pode-se mudar a classe de implementação sem requerer a recompilação da classe de abstração e seus clientes Melhora a extensibilidade: Pode-se estender as hierarquias Abstraction e Implementor de forma independente Esconde detalhes de implementação dos clientes

Implementação: Somente um Implementor: neste caso não é necessário o Implementor abstrato. Caso degenerado do Bridge: um-para-um. Ainda é útil pois mudanças na implementação exigem apenas a operação de link sem recompilação Onde criar o objeto Implementor? Se Abstraction conhece todas as implementações concretas ele pode decidir qual implementação utilizar baseado, por exemplo, em um parâmetro do construtor Pode-se utilizar uma implementação default e trocá-la em run-time quando necessário Pode-se também utilizar uma fábrica

Implementação: Compartilhando implementações:

Código exemplo:

Código exemplo:

Código exemplo:

Código exemplo:

Código exemplo:

Código exemplo:

Usos conhecidos: ET++ libg++ NeXT's AppKit

Padrões relacionados: Um Abstract Factory pode criar e configurar um Bridge particular O Adapter tem como objetivo fazer com que classes não-relacionadas trabalhem em conjunto. Geralmente são utilizados depois que o sistema foi projetado O Bridge, por outro lado, é já aplicado durante o projeto do sistema, com o objetivo de permitir que abstrações e implementações variem independentemente

INF011 Padrões de Projeto 10 Bridge 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