Structural Patterns - Flyweight

Documentos relacionados
Padrões de Projeto de Software

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

MODELAGEM DE DADOS UNIDADE 2 Projeto de Banco de Dados. Luiz Leão

Creational Patterns Factory method

Conceitos relativos a Banco de Dados & Modelos de Informação de Banco de Dados. Introdução

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

Structural Patterns - Composite

Banco de Dados I Parte I: Introdução

HASHING Hashing Motivação - Acesso Direto:

Universidade Federal da Paraíba CCEN Departamento de Informática Disciplina: Banco de Dados. Aula 1 Introdução a Banco de Dados

Atualização Técnica e Pedagógica de Professores no componente de Lógica de Programação com C# (console) Semana 4 Vetor e Matriz


Resolução dos exercícios da lista BD01

HASHING HASHING 6/10/2008

Bancos de dados. Sistemas de bancos de dados. Professor Emiliano S. Monteiro

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

O que é um jogo digital?

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Structural Patterns - Bridge

Capítulo 6: Linguagens de Programação

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

Este capítulo apresenta os conceitos básicos da área de banco de dados que são necessário à compreensão do projeto de banco de dados.

Sistemas Operacionais

Gerência do Sistema de Arquivos. Adão de Melo Neto

Banco de Dados. Aula 2 - Prof. Bruno Moreno 19/08/2011

Introdução à Ciência da Computação

Introdução a Sistemas Operacionais. Adão de Melo Neto

Bem vindo à semana 14! Tema central: Banco de Dados

CCO 016 Fundamentos de Programação

Classes e Banco de Dados

Gerência de Configuração: Terminologia. Leonardo Gresta Paulino Murta

Ciências da Computação Disciplina:Computação Gráfica

Gerência do Sistema de Arquivos. Adão de Melo Neto

Parte SISTEMAS DE GERÊNCIA DE BANCO DE DADOS 2.1 CARACTERÍSTICAS DE UM BANCO DE DADOS

Arquitetura de Computadores. Processamento Paralelo

Conceitos e arquitetura do banco de dados. Andre Noel

Revisando Banco de Dados. Modelo Relacional

Segmentação de Memória

A CASA DO SIMULADO DESAFIO QUESTÕES MINISSIMULADO 14/360

2. Conceitos e Arquiteturas de um SGBD

ARQUITETURA DE SISTEMAS OPERACIONAIS. VISÃO GERAL DE UM SISTEMA OPERACIONAL Prof. André Luís Alves E. M. DR. LEANDRO FRANCESCHINI

Behavioral Patterns Chain of ofresponsability

Introdução à Informática

Conceitos Básicos. Fundação Centro de Análise, Pesquisa e Inovação Tecnológica Instituto de Ensino Superior - FUCAPI. Disciplina: Banco de Dados

Introdução aos Sistemas Operacionais

Linguagem de Programação

1 introdução. capítulo

Sistemas de Computação. Seção Notas. Endereçamento de Memória. Notas. Oitava Aula. Haroldo Gambini Santos. 3 de setembro de 2009.

MODELAGEM DE DADOS UNIDADE 4 Modelo Entidade-Relacionamento. Luiz Leão

Padrões de Projeto de Software

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

18/03/2012. Independência de Dados: capacidade de modificar a definição dos esquemas em. determinado nível, sem afetar o esquema do nível superior;

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento

Desenvolvimento Web II

Behavioral Patterns - Mediator

Disciplina: Introdução aos Sistemas Operacionais Professor: Fernando H. Santorsula

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA

Organização de Arquivos

Introdução. Motivação. Sistema Gerenciador de Banco de Dados (SGBD) Banco de Dados (BD) Sistema de Banco de Dados (SBD)

Structural Patterns - Proxy

Modelos. Banco de dados. Professor: Jarbas Araújo CENTRO EDUCACIONAL RADIER.

Banco de Dados - Conceitos. Baseado no material da Profa. Vania Bogorny (UFSC)

Structural Patterns - Adapter

SISTEMAS OPERACIONAIS

Banco de Dados Modelagem e Normalização

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Capítulo 11 Sistemas de Arquivos

Introdução à Ciência da Computação

Backup e Restauração Banco de Dados. Evandro Deliberal

Banco de Dados e Aplicações em Negócios: Introdução.

Modelagem Conceitos e arquitetura do SBD; Modelo de dados entidade-relacionamento modelo ER; Modelo de dados relacional; Mapeamento ER para o

AULA 4 - FLUXOGRAMAS PARTE 1 Noções sobre a ferramenta Flowgorithm para construção de fluxogramas

Descubra as novas funcionalidades com Office 365 My I-365, uma nova forma de colaborar Ipsos

Introdução a B anco de Dados. INE5206 Introdução à Informática INE/CTC/UFSC Prof. Roberto Willrich

Atualizada em 29/01/

Banco de Dados. Banco de Dados II. Característica fundamental de SGBDs. Abordagem SGBD x Processamento de Arquivos Tradicional

Banco de Dados. SGBDs. Professor: Charles Leite

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

MC-102 Aula 20 Ponteiros III

Aula 2 BD Introdução. Profa. Elaine Faria UFU

Introdução a Ciência da Computação Estrutura e Organização das Informações PROFESSORA CINTIA CAETANO

Exercícios de Sistemas Operacionais 3 B (1) Gerência de Dispositivos de Entrada e Saída

Excel 2016 Avançado Plano de Aula - 24 Aulas (Aulas de 1 Hora)

GERENCIAMENTO DE TAREFAS. Prof. Me. Hélio Esperidião

Análise e Projeto de Software

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Sistemas Operacionais II. Linux 2: Threads, Escalonamento, Gerenciamento de Memória e Sistemas de Arquivos

Excel 2013 Avançado Plano de Aula - 24 Aulas (Aulas de 1 Hora).

BANCO DE DADOS. Araújo Lima. Jan / Araújo

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Introdução a Banco de Dados. Adão de Melo Neto

Professor Leonardo Larback

Aula 16. Tópicos Especiais II Banco de Dados. Prof. Dr. Dilermando Piva Jr.

Introdução à Banco de Dados

Transcrição:

Algumas aplicações, tais como editores de texto, possuem uma granularidade de representação muito fina sobre os dados;... e uma quantidade muito grande de dados. O custo de memória para representação destes dados individualmente pode ser proibitivo. Na maioria dos casos uma mesma representação é replicada em muitos objetos ao mesmo tempo. Portanto, ocorre muita repetição de representação de objetos. O padrão flyweight é solução para o problema. Este padrão permite compartilhar representações (ou estados) para objetos diferentes. 29-abr-09 Leandro Tonietto 137

Independência dos objetos-pai. Flyweight é um objeto que representa um estado qualquer e é independe de contexto, podendo ser referenciado por diversos tipos de elementos ou outros objetos. Para tanto, ele não pode fazer referência ou estar atrelado a um tipo específico de objeto-pai. Conceito: Estado intrínseco ou extrínseco. Intrínseco: os dados são independentes do contexto. Extrínseco: dependentes ou variam conforme o contexto. Portanto, não podem ser compartilhados. É possível que o contexto seja passado por parâmetro para alguma operação do flyweight. 29-abr-09 Leandro Tonietto 138

Exemplo em [1]. Representação de elementos de texto: Um texto contém colunas, que contêm parágrafos, que contém os caracteres. Diversos estados dos caracteres são repetidos em diversos pontos do texto 29-abr-09 Leandro Tonietto 139

Compartilhamento de objetos para diminuir consumo de memória Por questões de economia de memória, os objetos que representação caracteres e suas formatações, são compartilhados por diversos outros objetos. 29-abr-09 Leandro Tonietto 140

Estrutura que representa o exemplo em [1]: Por exemplo, o objeto Flyweight pode armazenar apenas as informações referentes ao caractere e o contexto de uso é passado pelo objeto-pai Row, como: posição em que a letra deve ser desenhada. A Economia está no fato de que representações diferentes é muito menor que o número de objetos ou elementos num texto. 29-abr-09 Leandro Tonietto 141

Estrutura básica: Structural Patterns - Flyweight 29-abr-09 Leandro Tonietto 142

Aplicabilidade: Structural Patterns - Flyweight Aplicações que usam um grande número de objetos. Custo de armazenamento é alto por conta quantidade de representação de objetos. Muitos objetos podem compartilhar uma mesma representação e é possível separar o estado extrínseco dos mesmos. Ponto de atenção: Objetos conceitualmente distintos, tem uma mesma identidade. 29-abr-09 Leandro Tonietto 143

Conseqüências: Custos de execução para computação do estado extrínseco (procura, transferência, computação,...) Ganhos de armazenamento dependem: Redução do número de instâncias com o compartilhamento. Quantidade de estado intrínseco por objeto. Dados extrínsecos armazenados ou computados. Quanto mais estados são compartilhados, menor o custo de memória. Quanto mais os estados extrínsecos puderem ser calculados do que armazenados, melhor. Exemplo, a posição de caractere no texto: não é necessário que ela seja armazenada, uma vez que o texto é seqüencial e os caracteres podem ser renderizados desta forma. Em [1]: Then you save on storage in two ways: Sharing reduces the cost of intrinsic state, and you trade extrinsic state for computation time. Há ainda a questão de objetos conceitualmente diferentes compartilharem a mesma memória, deve-se ter atenção para que somente o estado intrínseco esteja de fato armazenado no flyweight. 29-abr-09 Leandro Tonietto 144

Implementação: Ponto-chave está na separação entre o que é extrínseco do que intrínseco. Isto depende da aplicação em questão. Devido ao compartilhamento de estados, não é interessante que o cliente instancie diretamente os flyweight, neste caso é melhor terceirizar esta tarefa para uma fábrica, que pode decidir entre criar um flyweight ou retornar um já criado. Também há um ponto de atenção na remoção de objetos da memória. Por causa, do compartilhamento, os ponteiros ficaram acesso a uma memória removida sem a verificação de uso por outras instâncias. Isto também aponta para uso de classe controle o pool de flyweights. 29-abr-09 Leandro Tonietto 145

Exercício/Discussão: Structural Patterns - Flyweight Considere um jogo RTS. Como poderíamos fazer uso de flyweights para economia de memória? Considere um aplicativo multiusuário que aplica filtros imagem sobre fotografias. Por exemplo, vários usuários podem realizar a aplicação dos mesmos filtros enquanto utilizam o sistema. É possível encaixar o padrão flyweight? Mais exemplos do uso de flyweight: Simulação de multidões de objetos. Há muita informação que pode ser compartilhada! 29-abr-09 Leandro Tonietto 146

Exemplo prático 1 (ver código-fonte): aplicação com janelas gráficas utiliza mesmo ícone para cada janela interna que ser aberta na aplicação (Exemplo editor de imagens e "internalframes" que abertos na aplicação). Uma solução é criar um objeto que seja uma fábrica de ícones. Porém quando um ícone já criado é solicitado, a fábrica não precisa instanciar outro apenas retorna o criado anteriormente. Exemplo prático 2 (ver código-fonte): Um sistema com recursos de BD faz uso das mesmas litas auxiliares para diversos cadastros, como por exemplo: listas de uf, países e municípios. Ao invés de executar a consulta todas as vezes em que fosse necessário e remontar uma lista de UFs, o sistema poderia manter um objeto na memória e compartilha-lo com os diversos cadastros do sistema. Exemplo prático 3: Um sistema que gerencia pontos de localidades reconhecidas em um mapa. Os objetos que representam os pontos de interesse e, principalmente, as rotas que levam aos caminhos possíveis entre dois pontos (origem e destino). Podem ser compartilhadas pelos diversos objetos que podem fazer uso delas. 29-abr-09 Leandro Tonietto 147