15
Padrão de Projeto Composite Leandro Alvim

Padrão de Projeto Composite

Embed Size (px)

DESCRIPTION

Padrão de Projeto Composite. Leandro Alvim. Propósito do Padrão. Compor objetos em uma estrutura de árvore Representar hierarquias de parte-todo Tratar objetos e composições de objetos uniformemente Mascarar ao Cliente a manipulação desses objetos. Motivação - Exemplo. Um figura pode ser - PowerPoint PPT Presentation

Citation preview

Page 1: Padrão de Projeto Composite

Padrão de ProjetoComposite

Leandro Alvim

Page 2: Padrão de Projeto Composite

Propósito do Padrão• Compor objetos em uma estrutura de

árvore– Representar hierarquias de parte-todo

• Tratar objetos e composições de objetos uniformemente– Mascarar ao Cliente a manipulação

desses objetos

Page 3: Padrão de Projeto Composite

Motivação - Exemplo• Um figura pode ser

– Linha, retângulo ou texto (primitivas)• Uma figura conter

– Figura (composição de primitivas)• O Cliente quer apenas desenhar a figura

– Aspectos estruturais não são relevantes• O que é Linha ?

Page 4: Padrão de Projeto Composite

Motivação - Exemplo

• Uma figura é uma composição de uma figura com primitivas

Page 5: Padrão de Projeto Composite

Estrutura

Page 6: Padrão de Projeto Composite

Participantes• Component (nó)

– Define a interface para os objetos da composição

– Implementa o comportamento de uma interface comum para todas as composições e objetos dessas composições

– Define uma inetrface para manipulação e aesso para os componentes filhos

• Leaf (nó folha ou terminal)

– Define o comportamento do objeto primitivo

– Objeto folha de uma composição

• Não possui filhos

Page 7: Padrão de Projeto Composite

Participantes• Composite (nó não-

terminal)– Armazena

componentes filhos– Define um

comportamento comum para os objetos filhos

– Implementa operações da interface Component que estão relacionadas aos seus componentes filhos

• Client– Manipula objetos que estão

contidos em composições a partir da interface Component

Page 8: Padrão de Projeto Composite

Colaborações

Page 9: Padrão de Projeto Composite

Aplicabilidade• Quando se quer representar hierarquias

de parte-todo• Quando a distinção entre objetos e

composições de objetos é irrelevante ao Cliente– Cliente trata objetos e composições

uniformemente

Page 10: Padrão de Projeto Composite

Conseqüências• Vantagens

– Traz ao Cliente a simplicidade quanto a utilização de uma estrutura

• Tratamento semehante para primitivas e composições

– Facilidade quanto a adição de novos componentes

• Não há necessidade de reestruturação do Cliente• A adição de um novo componente não altera a

estrutura de outras classes da árvore

– Melhor organização dos objetos primitivos• Objetos complexos são obtidos a partir da

composição de objetos simples

Page 11: Padrão de Projeto Composite

Conseqüências• Desvantagem

– Quando o Cliente necessita de um conjunto restrito de componentes que encontram-se em uma composição• Solução: Utilizar uma verificação em

tempo de execução

Page 12: Padrão de Projeto Composite

Exemplo de códigoComponent

Leaf

Page 13: Padrão de Projeto Composite

Exemplo de códigoComposite

Page 14: Padrão de Projeto Composite

Exemplo de código

Page 15: Padrão de Projeto Composite

Fim

[email protected]