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:

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

INF011 Padrões de Projeto. 10 Bridge

Structural Patterns - Bridge

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

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

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

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

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

INF011 Padrões de Projeto. 04 Builder

Análise e Projeto Orientados por Objetos

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

Classe Abstrata e Interface

Análise e Projeto Orientados por Objetos

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. Factory Method

Creational Patterns Factory method

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

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

Padrões de Projeto de Software

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. 05 Factory Method

Padrões de Projeto de Software Orientado a Objetos

Análise e Projeto Orientados por Objetos

Abstract Factory. Edeyson Andrade Gomes

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Mas o que é mesmo Padrão de Projeto?

Interfaces e Classes Abstratas

Computação II Orientação a Objetos

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

LINGUAGEM DE PROGRAMAÇÃO

Palavras Reservadas da Linguagem Java

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

POO29004 Programação Orientada a Objetos

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

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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

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

E N C A P S U L A M E N T O P R O F. M E. H É L I O E S P E R I D I Ã O

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

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

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

Linguagens de Programação Aula 12

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

Computação II Orientação a Objetos

INF011 Padrões de Projeto. 03 Abstract Factory

As classes Formatador e ElementosAFormatar

Programação orientada a objetos

Padrões Comportamentais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Padrão de Projeto State

Análise e Projeto Orientados por Objetos

Módulo III Padrões GOF

Computação II Orientação a Objetos

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

Laboratório de programação II

U N I V E R S I D A D E C A N D I D O M E N D E S P Ó S G R A D U A Ç Ã O L A T O S E N S U I N S T I T U T O A V E Z D O M E S T R E

POO29004 Programação Orientada a Objetos

Padrões Fábrica. Simple Factory Factory Method

Aula 10 POO 1 Classes Abstratas. Profa. Elaine Faria UFU

Padrão de projeto de software

A C T A N. º I V /

Programação Orientada a Objetos JAVA - NETBEANS

Padrões de Projeto. Abstract Factory

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

M a n h ã... p r e s e n t e! L u g a r... p r e s e n t e! Q u e m... p r e s e n t e! N e n h u m... p r e s e n t e! C u í c a... p r e s e n t e!

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

Universidade Federal de Uberlândia

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Objetivos. Explorar os conceitos fundamentais acerca do uso herança na linguagem Java

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

Rafael B. Pereira (

Linguagem de Programação III

Computação II Orientação a Objetos

Interfaces. Principais conceitos. Classes abstratas Interfaces Herança múltipla. Mário Meireles Teixeira.

O PARADIGMA ORIENTADO POR OBJETOS

Engenharia de Software

POO e C++: Herança e Polimorfismo

Introdução à Programação. Encapsulamento e Herança

Segunda Parte (3 valores) Primeira Parte (7 valores) Nome: Número: PERGUNTA NOTA PERGUNTA RESPOSTA

Programação com Objectos 1º Teste Tipo 1º Semestre (90 minutos)

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

6 Implementação do iph

Programação Orientada a Objetos

Capítulo 2. Orientação a Objetos

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Programação Orientada a Objetos para Redes de Computadores

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

PROGRAMAÇÃO ORIENTADA A

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Classes e Objetos. Prof. Leonardo Barreto Campos 1

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

Transcriçã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 Classificação: Propósito: Estrutural Escopo: Objetos Bridge Prof. Alexandre Vidal DEINF-UFMA Intenção: desacopla uma abstração de sua implementação de modo que elas possam variar independentemente. a.k.a.: handle/body Motivação: Motivação: o uso de herança para permitir diversas implementações de uma abstração pode não ser suficientemente flexível; interface e implementação ficam definitivamente ligadas e não podem ser usadas de modo independente; modificar a abstração afeta em geral as implementações. por exemplo: um código cliente deve ser capaz de criar um código de uma janela, sem se comprometer com um tipo específico de janela (e.g., Xwindow, IBM Presentation Manager, etc.); o padrão Bridge cria uma hierarquia para as interfaces de janela e uma hierarquia para cada implementação de janela específica de uma plataforma. A segunda hierarquia deriva de uma classe raiz WindowImp.

Motivação Aplicabilidade (quando usar o padrão): para evitar um conexão permanente entre abstração e implementação; para estender abstrações e suas implementações através de subclasses de modo independente; para evitar que mudanças na implementação atinjam os clientes; para evitar proliferação de classes (muitas classes de diferentes artefatos para diferentes ambientes em uma única hierarquia). Estrutura Participantes Abstraction: define a interface da abstração; mantém uma referência para o objeto Implementor; RefinedAbstraction: estende a interface definida pela abstração;

Participantes Implementor: define a interface para as classes de implementação; não precisa ser igual e normalmente é diferente da interface da abstração; Colaborações abstrações encaminham requisições dos clientes aos objetos implementadores. a interface da implementação define apenas operações primitivas, enquanto a interface da abstração define operações de alto nível baseadas nas operações primitivas. ConcreteImplementor: implementa a interface Implementor. Conseqüências Implementação (aspectos) separa interface de implementação; melhora as hierarquias de abstração e implementação(evolução independente); esconde detalhes de implementação dos clientes. apenas um Implementor: é um caso degenrado do Bridge; não precisa criar uma classe Implementor abstrata; ainda assim é útil por separar interface da implementação;

Implementação (aspectos) quando, como e onde decidir qual classe Implementor deve ser instanciada? no construtor da abstração, se ela conhece todas as implementações; possivelmente com base em parâmetros passados ao construtor; usar uma implementação default cambiável com o uso; usar uma AbstractFactory. Subclasses de Window definem os diferentes tipos de janelas que a aplicação poderia usar, tais como janelas de aplicação, ícones, janelas transientes para diálogos, paletas flutuantes, etc. class ApplicationWindow : public Window { public: //... virtual void DrawContents(); }; void ApplicationWindow::DrawContents () { GetView()->DrawOn(this); }

operações Window são definidas em termos da interface WindowImp. Por exemplo, DrawRect extrai quatro coordenadas de seus parâmetros Point antes de chamar a operação WindowImp que desenha o retângulo na jnela: void Window::DrawRect (const Point& p1, const Point& p2) { WindowImp* imp = GetWindowImp(); imp->devicerect(p1.x(), p1.y(), p2.x(), p2.y()); } subclasses concretas de WindowImp suportam diferentes sistemas de janela. A subclasse XwindowImp suporta o sistema X Window: class XWindowImp : public WindowImp { public: XWindowImp(); virtual void DeviceRect(Coord, Coord, Coord, Coord); // remainder of public interface... private: // lots of X window system-specific state, including: Display* _dpy; Drawable _winid; // window id GC _gc; // window graphic context }; essas subclasses implementam operações WindowImp em termos de primitivas de sistema window. void XWindowImp::DeviceRect ( ){ Coord x0, Coord y0, Coord x1, Coord y1 int x = round(min(x0, x1)); int y = round(min(y0, y1)); int w = round(abs(x0 - x1)); int h = round(abs(y0 - y1)); XDrawRectangle(_dpy, _winid, _gc, x, y, w, h); }

usos conhecidos ver GoF; Padrões Relacionados um Abstract Factory pode criar e configurar um padrão Bridge específico; o padrão Adapter é dirigido para fazer classes não relacionadas trabalharem juntas. Isso acontece em geral depois de finalizado o projeto dos sistemas Bridge, por outro lado, é usado desde o início em um projeto para que abstrações e implementações variem de modo independente.