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

Documentos relacionados
Padrões Comportamentais

Behavioral Patterns - Mediator

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

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.

Padrões Comportamentais. Padrões de Projeto Comportamentais. Motivação. Chain of Responsibility (CoR) Padrão Chain of Responsibility

Padrões de Projeto. Factory Method

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

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

Profa. Thienne Johnson

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos

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

Análise e Projeto Orientados por Objetos

Classe Abstrata e Interface

Análise e Projeto Orientados por Objetos

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

Mas o que é mesmo Padrão de Projeto?

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

INF011 Padrões de Projeto. 04 Builder

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

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

Visões Arquiteturais. Visões Arquiteturais

Módulo III Padrões GOF

Estilos Arquiteturais

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

Creational Patterns Factory method

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

PROJETO DE ARQUITETURA

Análise e Projeto Orientados por Objetos

Padrão de projeto de software

Padrões de Projeto de Software

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

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

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

Técnicas para Reutilização de Software

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

INF011 Padrões de Projeto. 10 Bridge

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

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

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

A C T A N. º I V /

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!

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

Padrões de Projeto de Software

Sistemas Operacionais Estrutura do Sistema Operacional. Arquiteturas do Kernel

ALUNO: RONI FABIO BANASZEWSKI

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

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

Engenharia de Software

Exemplos de Estilos Arquiteturais. Estilos Arquiteturais. Estilos Arquiteturais. Estilo: Pipe e Filtros

Padrão: Versionamento

Design Patterns. Viviane Torres da Silva

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

C com introdução a OO

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

// quando o estado do Sujeito muda

Herança e Polimorfismo

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

P R O F E S S O R V I N I C I U S S I L V A CAP II DESIGN D E E M B A L A G E N S

Programação Java (nível intermediário) 4. Polimorfismo

Análise e Projeto Orientados por Objetos

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

12/03/16. Generalização. Associação. Agregação UML Relações. entre Classes. Composição. Prof.Dr. Enzo Seraphim. Dependência

Arquitetura de Software

Programação por Objectos. Java

Classes e Objetos. Sintaxe de classe em Java

Padrões contexto problema solução

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

Conceitos de Programação Orientada a Objetos

Orientação a Objetos. Fernando Camargo 5 de junho de 2017

Laboratório de programação II

Engenharia de Software

Herança - Conceitos Básicos

// quando o estado do Sujeito muda

Padrões de Projeto de Software

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Padrão Comportamental: Paginador

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Padrões de Projeto de Software

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

POO e C++: Herança e Polimorfismo

Padrões de projeto 1

Interfaces. Classes abstratas que possuem apenas métodos abstratos. Na Interface: Métodos são implicitamente. Campos são implicitamente

PROGRAMAÇÃO ORIENTADA A

Reuso de Software Aula Maio 2012

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

Agenda da Aula. Reuso de Software. Tipos de Reuso. Potenciais Problemas. Vantagens de Reuso. Introdução a Reuso de Software

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

T A B E L A D E P R E Ç O S A B R I L

Padrões Fábrica. Simple Factory Factory Method

Linguagens de Programação Aula 12

Padrões de Projeto de Software

Observer. Edeyson Andrade Gomes

Programação Orientada a Objetos para Redes de Computadores

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 Prof. Alexandre Vidal DEINF-UFMA Classificação: Propósito: Comportamental Escopo: Objeto Intenção: definir um objeto que encapsula como um conjunto de objetos interage manter objetos fracamante acoplados impedindo-os de se referirem entre si explicitamente. Isso permite variar sua interação de modo independente. motivação: OO design encoraja a distribuição de responsabilidades (aumenta reúso) isso pode resultar em um excessivo número de conexões entre objetos (atrapalha reúso) e.g.: diferentes caixas de diálogos podem ter diferentes dependências entre os mesmos widgets o comportamento coletivo pode ser encapsulado em um objeto mediator separado motivação: encapsula comportamento coletivo e é responsável pelo controle e coordenação das interacões de um grupo de objetos O objeto mediator serve como um intermediário que evita que objetos no grupo de referenciarem uns aos outros explicitamente. os objetos só conhecem o mediator, reduzindo protanto o número de interconecções Ele age como hub de comunicação para os widgets

Motivação: Aplicabilidade (quando usar o padrão): quando um conjunto de objetos se comunica entre si de modo bem definido, mas complexo quando é difícil reusar um objeto porque ele se comunica com muitos outros objetos; quando o comportamento distribuído entre diversas classes deve ser personalizado sem excesso de subclasses. Estrutura Participantes : define uma interface para comunicação com os objetos Colleague Concrete: implementa comportamento cooperativo através da coordenação de objetos Colleague; conhece e mantém seus objetos Colleagues

Participantes Colleague classes: cada classe Colleague conhece seu objeto cada objeto Colleague comunica-se com o seu obejto em situaçoes nas quais teria de comunicar-se com outro objeto Colleague Colaborações Colleagues enviam e recebem requisições do objeto por sua vez, o implementa o comportamento cooperativo ao redirecionar as requisições aos objetos Colleague apropriados Conseqüências limita hierarquia de subclasses apenas à classe promove desacoplamento entre Colleagues simplifica protocolos entre objetos: muitos-para-muitos substituido com um-para-muitos abstrai como os objetos cooperam (ajuda a entender o funcionamento dos objetos) centraliza comportamento (objeto monolítico) Implementação omissão da classe abstrata: quando Colleagues interagem com um único comunicação Colleague-: Colleagues se comunicam com quando ocorre um evento de interesse. (ver padrão Observer, como uma opção)

class DialogDirector { public: virtual ~DialogDirector(); virtual void ShowDialog(); virtual void WidgetChanged(Widget*) = 0; protected: DialogDirector(); class Widget { public: Widget(DialogDirector*); virtual void Changed(); virtual void HandleMouse(MouseEvent& event); //... private: DialogDirector* _director; } } virtual void CreateWidgets() = 0; void Widget::Changed () { _director->widgetchanged(this); } A classe FontDialogDirector faz a mediação entre widgets no dialog box class FontDialogDirector : public DialogDirector { public: FontDialogDirector(); virtual ~FontDialogDirector(); virtual void WidgetChanged(Widget *); protected: virtual void CreateWidgets(); private: Button* _ok; Button* _cancel; ListBox* _fontlist; EntryField* _fontname; }; FontDialogDirector mantém os widgets que contém. Ela redefine CreateWidgets() para criar os widgets e inicializar suas referências para eles: void FontDialogDirector::CreateWidgets () { _ok = new Button(this); _cancel = new Button(this); _fontlist = new ListBox(this); _fontname = new EntryField(this); // fill the listbox with the available font names // assemble the widgets in the dialog }

WidgetChanged assegura que widgets funcionam adequadamente juntos: Usos conhecidos : ver livro da GoF Padrões Relacionados Facade encapsula um subsistema de objetos e é unidirecional; encapsula um conjunto de objetos que cooperam e interagem entre si e com o. Comunicação no pode ser implementada com o Observer.