Apresentação Composite e State

Preview:

DESCRIPTION

Composite e State

Citation preview

Padrões de Projeto

Composite e State

Guilherme Y. Aoki RA 64321

Rafael H. Yamaguchi RA 62139

Joaquim P. S. Junior RA 55845

Composite

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

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

Problema

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

Solução

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

Participantes

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

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

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

Implementação

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

Exemplo

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

Exemplo

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

Elemento especial(composite) - agrega outros elementos.

Exemplo

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

implementação padrão: arquivo

Classe Arquivo

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

vídeo por exemplo, basta implementar o construtor:

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.

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:

Estrutura de Árvore

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.

State

Intenção

Alteração no comportamento do objeto.

Problema

Objeto depende do seu estado. Diversos comandos condicionais

dependentes do estado.

Solução

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

Estado do objeto como um objeto.

Participantes

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

Colaborações

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

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

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.

Implementação

Quem define as transições de estado? Uma alternativa baseada no uso de tabelas. Criando e destruindo objetos 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.

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

Operações básicas

Exemplo de Classe - Transições

Objeto (Mario)

Diagrama UML

Recommended