View
19
Download
7
Category
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