34
Padrões de Projeto Composite e State Guilherme Y. Aoki RA 64321 Rafael H. Yamaguchi RA 62139 Joaquim P. S. Junior RA 55845

Apresentação Composite e State

Embed Size (px)

DESCRIPTION

Composite e State

Citation preview

Page 1: Apresentação Composite e State

Padrões de Projeto

Composite e State

Guilherme Y. Aoki RA 64321

Rafael H. Yamaguchi RA 62139

Joaquim P. S. Junior RA 55845

Page 2: Apresentação Composite e State

Composite

Composite Object (Objeto Composto) Padrão de projeto Estrutural

Page 3: Apresentação Composite e State

Intenção

Ele permite que um objeto seja constituído de outros objetos semelhantes a ele formando uma hierarquia 

Utilizado para aplicações que desejam ignorar a diferença entre composição de objetos e objetos individuais

Page 4: Apresentação Composite e State

Problema

O código utilizado precisa tratar diferentemente as classes básicas e classes que as contem.

Page 5: Apresentação Composite e State

Solução

O padrão propõe que se construa uma interface ou classe abstrata que representa o tipo de objeto na hierarquia.

Page 6: Apresentação Composite e State

Participantes

Componente (Gráfico) Folha/leaf (Retângulo, linha, texto, etc...) Composite (Imagem) Cliente

Page 7: Apresentação Composite e State

Colaboração

clientes utilizam interface de Component para interagir com estrutura

se recipiente de uma mensagem é Leaf a requisição é tratada diretamente

se recipiente é Composite então geralmente ele retransmite mensagens para seus componentes

Page 8: Apresentação Composite e State

Consequências

define hierarquia de classes que consistem de objetos primitivos (Leaf) e objetos compostos (Composite).

facilita a adição de novos componentes no sistema

pode fazer a arquitetura dos demais sistema geral

Page 9: Apresentação Composite e State

Implementação

referências explícitas a “pais” compartilhando componentes Maximizando a interface de Component

Page 10: Apresentação Composite e State

Exemplo

Intenção do exemplo : uniformizar o acesso aos arquivos e pastas

Page 11: Apresentação Composite e State

Exemplo

Classe base(arquivo) contém toda a interface necessária para todos os elementos

Elemento especial(composite) - agrega outros elementos.

Page 12: Apresentação Composite e State

Exemplo

Classe base Arquivo - implementa todos os métodos necessários para arquivos e pastas

implementação padrão: arquivo

Page 13: Apresentação Composite e State

Classe Arquivo

Page 14: Apresentação Composite e State

Exemplo Uma vez que tudo foi definido nesta classe, para criar um arquivo de

vídeo por exemplo, basta implementar o construtor:

Page 15: Apresentação Composite e State

Exemplo Já na classe que representa a Pasta nós sobrescrevemos o

comportamento padrão e repassamos a chamada para todos os arquivos, sejam arquivos ou pastas.

Page 16: Apresentação Composite e State
Page 17: Apresentação Composite e State

Exemplo Com isto não é necessário conhecer a implementação dos objetos

concretos, muito menos fazer cast. Veja como poderíamos utilizar o código do Composite:

Page 18: Apresentação Composite e State
Page 19: Apresentação Composite e State

Estrutura de Árvore

Page 20: Apresentação Composite e State

Estrutura de Árvore

Como uma estrutura de árvore temoas Nós e Folhas. No padrão Composite os arquivos concretos do nosso exemplo são chamados de Folhas, pois não possuem filhos e os arquivos pasta são chamados de Nós, pois possuem filhos e fornecem operações sobre esses filhos.

Page 21: Apresentação Composite e State

State

Page 22: Apresentação Composite e State

Intenção

Alteração no comportamento do objeto.

Page 23: Apresentação Composite e State

Problema

Objeto depende do seu estado. Diversos comandos condicionais

dependentes do estado.

Page 24: Apresentação Composite e State

Solução

Mudança de comportamento de acordo com a mudança de estado.

Estado do objeto como um objeto.

Page 25: Apresentação Composite e State

Participantes

Context (TCPConnection). State (TCPState). ConcreteState.

Page 26: Apresentação Composite e State

Colaborações

ConcreteState e Context e a definição de estado.

Context: Interface primária. Delega solicitações.

Page 27: Apresentação Composite e State

Consequências

Ele confina comportamentos específicos de estados e particiona o comportamento para estados diferentes.

Ele torna explícitas as transições de estado. Objetos State podem ser compartilhados.

Page 28: Apresentação Composite e State

Implementação

Quem define as transições de estado? Uma alternativa baseada no uso de tabelas. Criando e destruindo objetos State.

Page 29: Apresentação Composite e State

Exemplo

Mario (Super Mario Bros) - várias trocas de estado do personagem durante o jogo

Conjunto grande de possíveis estados cada transição depende de qual é o estado atual do personagem.

Page 30: Apresentação Composite e State

Exemplo Pegar Cogumelo:

Se Mario pequeno -> Mario grandeSe Mario grande -> 1000 pontosSe Mario fogo -> 1000 pontosSe Mario capa -> 1000 pontos

Pegar Flor:Se Mario pequeno -> Mario grande e Mario fogoSe Mario grande -> Mario fogoSe Mario fogo -> 1000 pontosSe Mario capa -> Mario fogo

Pegar Pena:Se Mario pequeno -> Mario grande e Mario capaSe Mario grande -> Mario capaSe Mario fogo -> Mario fogoSe Mario capa -> 1000 pontos

Levar Dano:Se Mario pequeno -> Mario mortoSe Mario grande -> Mario pequenoSe Mario fogo -> Mario grandeSe Mario capa -> Mario grande

Page 31: Apresentação Composite e State

Operações básicas

Page 32: Apresentação Composite e State

Exemplo de Classe - Transições

Page 33: Apresentação Composite e State

Objeto (Mario)

Page 34: Apresentação Composite e State

Diagrama UML