Projeto de Sistemas de Software

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

JAVA Orientação a Objetos
Recursividade Inhaúma Neves Ferraz
Soluções Iterativas com Laços
Carlos Roberto Marques Junior
Programação em Java Prof. Maurício Braga
Estruturas de Repetição
Classes Abstratas e Interfaces
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Aula Teste INFNET terça-feira, 11 de janeiro de 2011
Chain of Responsibility
Projeto de Sistemas de Software
Projeto de Sistemas de Software
Padrão de Projeto Interpreter
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Projeto de Sistemas de Software Kelly Leal Leandra Mara da Silva
Padrão Bridge (Handle/Body)
Projeto de Sistemas de Software Fernando de Freitas Silva
Strategy Projeto de Sistemas de Software
Padrões de Projeto Prototype.
Kleinner Farias e Raphael do Vale
Padrão de Projeto Iterator
Projeto de Sistemas de Software Leandra Mara da Silva
Padrão Abstract Factory
Orientação a Objetos: Modificador Final para Métodos e Classes
Programação Básica em Java
Recursividade Inhaúma Neves Ferraz
Walfredo Cirne walfredo.dsc.ufpb.br
Programação Concorrente
Membros estáticos.
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
JAVA: Conceitos Iniciais
Concorrência em Java Threads em Java.
Threads: Introdução e Implementação
Tipos Agregados Homogêneos e Listas
Programação Orientada a Objetos com Java
Professor: Hyggo Almeida
JAVA Orientação a Objetos
JAVA Linguagem Ambiente de Desenvolvimento
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Atributos, Encapsulamento e Interface em Java
Programação I Aula 2 (Métodos)
Chamada Remota de Procedimentos
OPERADORESOPERADORES SCJP – Otimize-TI. Operadores Java Resultado: Maioria das operações é um booleano ou numérico. Não podem ser sobrecarregados (Existem.
Aula 3 Igor Ebrahim (ies) if669 - Introdução à Programação Monitoria de IP.
Orientação a Objetos e Java Graduação em Ciência da Computação
Capítulo 1. static import  A importação estática pode ser utilizado quando queremos acessar métodos ou atributos estáticos de uma outra classe.  Através.
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Pilhas Profa. Nádia Félix.
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
LPII Professora Lucélia. Pacotes Um pacote em Java é um diretório onde ficam armazenadas uma ou mais classes. Geralmente as classes com a mesma afinidade.
By Ducheno Kelly Centro de Formação São Domingos.
Wagner Santos C. de Jesus
Programação Orientada a Objetos - Java
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Introdução às Java Threads
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Java Kickstart, day 2 Semelhanças com linguagem C.
Aula Prática 4 Monitoria IP/CC (~if669).
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Implementação Orientada a Objetos – Aula 06 Conversão de tipos e métodos estáticos Prof. Danielle Martin Universidade de Mogi das Cruzes
Aula Prática 5 05/05/2010. //Estrutura do método public int subtrair (int a, int b){ //Calcule a operação desejada. int resultado = a – b; //Retorne o.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Coleções em Java - Parte 2
Padrões de Projeto Abstract Factory.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Transcrição da apresentação:

Projeto de Sistemas de Software Flyweight Projeto de Sistemas de Software Roberta Claudino Barreto Pessanha Gomes Ugo Braga Sangiorgi

Flyweight Propósito Usar compartilhamento para suportar uma grande quantidade de objetos de baixa granularidade de forma eficiente © LES/PUC-Rio

Flyweight Motivação Abstrair até o último nível é custoso Um Flyweight é um objeto compartilhado que pode ser usado em vários contextos ao mesmo tempo possui um estado intrínseco (comum a todos os contextos) se utiliza de vários estados extrínsecos (particulares a cada contexto) Ex.: Editor de Texto © LES/PUC-Rio

Flyweight Aplicabilidade A aplicação usa muito objetos A aplicação não depende da identidade de cada objeto individualmente Custo de armazenar os objetos é alto O estado de cada objeto pode ser armazenado fora dele Grupos de objetos podem ser substituídos por alguns objetos compartilhados © LES/PUC-Rio

Flyweight Estrutura © LES/PUC-Rio

Flyweight - Participantes Declara a interface pela qual os flyweights recebem e agem no estado extrínsico ConcreteFlyweight É compartilhado UnsharedConcreteFlyweight NÃO é compartilhado, é comum conter ConcreteFlyweights FlyweightFactory Compartilha os Flyweights quando já existem e cria quando ainda não existem Client Mantém referências para os Flyweights Armazena o estado extrínsico © LES/PUC-Rio

Flyweight Colaborações Consequências Clientes devem obter Flyweights exclusivamente da Factory Estado intrínseco é armazenado no ConcreteFlyweight Estado extrínseco é computado ou armazenado pelo Cliente. Clientes passam o estado ao flyweight. Consequências Custos de run-time associados com transferência, busca e/ou computação do estado extrínseco compensados pela economia em uso de memória à medida que mais flyweights são criados Redução de consumo de memória Redução do total de instâncias resultantes do compartilhamento Quantidade de estado intrínseco por objeto Se o estado extrínseco é armazenado ou computado © LES/PUC-Rio

Flyweight - Participantes Implementação Flyweight public interface Flyweight { public void Operation(int extrinsicstate); } ConcreteFlyweight public class ConcreteFlyweight implements Flyweight{ public void Operation(int extrinsicstate) { System.out.println("ConcreteFlyweight :" + extrinsicstate); UnsharedConcreteFlyweight public class UnsharedConcreteFlyweight implements Flyweight{ System.out.println("UnsharedConcreteFlyweight: " + extrinsicstate); © LES/PUC-Rio

Flyweight - Participantes Implementação FlyweightFactory import java.util.ArrayList; public class FlyweightFactory { ArrayList flyweights = new ArrayList(); public Flyweight GetFlyweight(int key) { if (flyweights.contains(key)){ return ((Flyweight) flyweights.get(key)); }else { Flyweight fly = new ConcreteFlyweight(); flyweights.add(key, fly); return fly; } © LES/PUC-Rio

Flyweight - Participantes Implementação Client public class Client { public static void main(String[] args) { int extrinsicstate = 12; // Estado extrínseco FlyweightFactory f = new FlyweightFactory(); Flyweight f0 = f.GetFlyweight(0); f0.Operation(--extrinsicstate); Flyweight f1 = f.GetFlyweight(1); f1.Operation(--extrinsicstate); Flyweight f2 = f.GetFlyweight(2); f2.Operation(--extrinsicstate); Flyweight f3 = f.GetFlyweight(3); f3.Operation(--extrinsicstate); UnsharedConcreteFlyweight uf = new UnsharedConcreteFlyweight(); uf.Operation(--extrinsicstate); } © LES/PUC-Rio