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



Documentos relacionados
INF011 Padrões de Projeto. 15 Proxy

Orientação a Objetos

Structural Patterns - Proxy

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos

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

Análise e Projeto Orientados por Objetos

Profa. Thienne Johnson

Análise e Projeto Orientados por Objetos

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

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Lista de Exercícios Para a P2

Análise e Projeto Orientados por Objetos

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

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

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

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

Design Patterns (Factory Method, Prototype, Singleton)

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

Programação com Objectos. 2º Teste 2015/2016 1º Semestre

Vamos imaginar que queremos projetar um jogo em que haja diferentes personagens:

Análise e Projeto Orientados por Objetos

Switch switch switch switch switch variável_inteira valor1 valor2 switch variável_inteira case case break switch case default default switch switch

Padrões Fábrica. Simple Factory Factory Method

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Programação Orientada a Objeto Java

PADI 2014/15. Aula 3.Net Remoting

Padrões de Desenho. Padrões de Desenho

Programação Orientada a Objetos

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

Capítulo 4 - Polimorfismo

LINGUAGEM JAVA - RESUMO

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

ção a Objetos em Java

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

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

Num programa em JAVA é possível definir diferentes sequências de execução independente: Threads.

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo 6 - Threads

PROGRAMAÇÃO ORIENTADA A OBJETOS: OCULTAR INFORMAÇÕES E ENCAPSULAMENTO

Padrões de Projeto. Factory Method

NORMA TÉCNICA E PROCEDIMENTOS PARA REALIZAR ALTERAÇÕES NO BANCO DE DADOS CORPORATIVO

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

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Refatoração Melhorando o sistema e preparando pra a Web

Criação de métodos em Java

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

Padrão de projeto de software

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

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

Desenvolvimento guiado por testes e ferramentas xunit

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

Sistemas de Objetos DistribuídosRevisão Java e Java ORBs p.1/26

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

Iterator. Professor: Hyggo Almeida

Conceitos básicos de programação

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

Padrões de Projeto de Software

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

MANUAL DO SISTEMA TRT-5 PRESTADOR MÉDICO

SUMÁRIO PARTE I. Princípios de Projeto, a Linguagem de Modelagem Unificada (Unified Modeling Language, ou UML) e Projeto em Nível de Código

Engenharia de Software

Programação Orientada a Objetos

Informativo de Versão 19.10

Tipos Abstratos de Dados (TAD)

Java First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Como tratar eventos - A interface ActionListener e o método actionperformed

Modulo II Padrões GRASP

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Programação Orientada a Objetos II

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

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

BC-0505 Processamento da Informação

Aplicativo da Cultura

Reader e Writer para streams de caracteres (texto).

Isto não é exequível!... B[8][6] A[10] Slides_Java_4

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Anexo III. Pesquisa de satisfação

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

INF 1010 Estruturas de Dados Avançadas

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Criando interfaces com o usuário. Continuação

3º Trabalho de GI Análise DFD

Módulo III Padrões GOF

DEVF IT Solutions. Gerenciador de Log. Documento Visão. Versão 2.0. Projeto Integrador 2015/2 Engenharia de Software

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

AULA 3 Alocação dinâmica de memória: Ponteiros

Classe Abstrata e Interface

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

Redes de Computadores

Sistemas Distribuídos Capítulo 4 - Aula 5

Lista de Exercícios Nro. 1 Programação Orientada a Objetos - SCC204

Programação Orientada a Objetos

Simulado de Linguagem de Programação Java

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: insira as propriedades escolhidas aqui FACULDADE DE TECNOLOGIA SENAC PELOTAS

Transcrição:

Padrões de Projeto Prof. Alexandre Vidal DEINF-UFMA Fevereiro de 2007

Singleton (padrão de criação) intenção: garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso para essa instância.

Singleton (padrão de criação) motivação: muitas impressoras precisam de um único spooler; sistemas normalmente únicos: um sistema de arquivos; um sistema gerrenciador de janelas.

Singleton (padrão de criação) aplicabilidade (quando usar o padrão): quando deve existir uma única instância de uma classe e o acesso à essa instância deve ser através de um ponto bem conhecido; quando for necessário estender a única instância de uma classe.

Singleton (padrão de criação) Estrutura

Singleton (padrão de criação) Participantes Singleton: define uma operação static instance() que permite aos clientes acessarem sua únic instância; pode ser responsável pela criação de sua própria instância única.

Singleton (padrão de criação) Colaborações os clientes acessam uma instância Singleton apenas através daoperação instance() do Singleton.

Singleton (padrão de criação) Conseqüências acesso controlado à instância única; redução do espaço de nomes (menos variáveis globais para armazenar instâncias únicas); permite um número variável de instâncias (alterando o padrão para controlar esse número);

Singleton (padrão de criação) declaração da classe Singleton class Singleton{ public: static Singleton* instance(); protected: Singleton(); private: static Singleton* _instance; }

Singleton (padrão de criação) Implementação da classe Singleton Singleton* Singleton::_instance = 0; Singleton* Singleton::instance() { } if (_instance == 0) _instance = new Singleton; } return _instance;

Singleton (padrão de criação) usos conhecidos ver página 136 no GoF (traduzido); Padrões Relacionados Abstract Factory; Builder; Prototype.

intenção: fornecer um substituto de outro objeto para controlar o acesso ao mesmo. a.k.a.: Surrogate

motivação: adiar o custo da criação integral e inicialização de um objeto até o momento necessário. por exemplo, criação de objetos gráficos, tais como grandes imagens.

aplicabilidade: remote proxy: representante local para um objeto remoto acesso a remote dbms, CORBA; virtual proxy: cria objetos caros sob demanda image proxy; protection proxy: controla o acesso para o objeto original; smart reference: adiciona operações sobre um pointer garbage collection (controle do número de referências); verifica se o objeto real está bloqueado antes de ser acessado.

Estrutura

Participantes Proxy: mantém uma referência para o objeto real; fornece interfce idêntica a de Subject; controla o acesso ao objeto real; pode ser responsável pela criação ou exclusão do objeto real; remote proxies: codificam e enviam uma solicitação para um objeto real em outro espaço de endereçamento; virtual proxies: podem manter cache sobreo objeto real para postergar o acesso ao mesmo; protection proxies: verificam permissões de acesso do solicitante.

Participantes Subject: define uma interface comum para RealSubject e Proxy; RealSubject: define o objeto real representado pelo proxy.

Colaborações o Proxy pode, quando apropriado, repassar solicitações para o RealSubject.

Conseqüências um proxy remoto pode ocultar o fato que um objeto reside em um espaço de enderaçamento diferente; um proxy virtual pode implementar otimizações, como criação de um objeto sob demanda;

Implementação (aspectos) sobrecarga do operador de acesso a membros em C++; o proxy só precisa conhecer o objeto real se vão instanciá-los. Caso contrário, podem tratar todas as classes Realsubject de maneira uniforme.

exemplo de código (java) public class ProxyDisplay extends JxFrame { public ProxyDisplay() { super("display proxied image"); JPanel p = new JPanel(); getcontentpane().add(p); p.setlayout(new BorderLayout()); ImageProxy image = new ImageProxy("elliott.jpg",321, 271); p.add("center", image); p.add("north", new Label(" ")); p.add("west", new Label(" ")); setsize(370, 350); setvisible(true); }

exemplo de código (java) public class ImageProxy extends JPanel{... public void paint(graphics g) { if (tracker.checkid(0)) { g.drawimage(img, 0, 0, this);//draw loaded image } else {//draw box outlining image if not loaded yet g.setcolor(color.black); g.drawrect(1, 1, width-2, height-2); } } }

usos conhecidos ver página 207 no GoF (traduzido); Padrões Relacionados Adapter; Decorator; Proxy.