Composite

1.174 visualizações

Publicada em

padrões de projeto composite

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.174
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
12
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Composite

  1. 1. Padrões de Projeto Composite 1 Grupo de Estudo – GETEC | SEDEN Por : Jorge Emílio
  2. 2. Abordagem - Composite  Composite  Aplicabilidade  Estrutura  Implementação  Conclusões  Referências 2
  3. 3. Composite  A ideia desse padrão é montar uma árvore onde tanto as folhas (objetos individuais) quanto os compostos (grupos de objetos) sejam tratados de maneira igual. Em termos de orientação a objetos, isso significa aplicarmos polimorfismo para chamar métodos de um objeto na árvore sem nos preocuparmos se ele é uma folha ou um composto 3
  4. 4. Composite - Aplicabilidade 4  Quando quiser representar hierarquia de objetos  Quando quiser que seus clientes sejam capazes de diferenciar suas composições de seus objetos individuais
  5. 5. Composite - Estrutura 5 Cliente Componente Folha Composite Manipula os objetos através da interface Componente Declara a interface para os objetos comuns de sua composição. Representa um objeto folha em uma estrutura de árvore.. Representa um nó em uma estrutura de árvore.
  6. 6. Composite – Estrutura de Árvore 6 A Q1 Q2 Q3 AB B B1 B2 Q4 Q5 Q6 Q7 As operações podem ser aplicadas ao todo. Ou às partes Print()
  7. 7. Composite – UML 7
  8. 8. Composite – Consequências  Define hierarquias de classes que consistem de objetos simples e objetos compostos  sempre que um cliente esperar um objeto simples, pode receber um composto  Simplifica os clientes  os clientes não sabem se estão lidando com objetos simples ou compostos.  Facilita a adição de novos tipos de componentes  Pode tornar o projeto geral demais  é difícil restringir os componentes de um composite. 8
  9. 9. 9Composite – Implementação // classe base (o componente) public abstract class ElementoDoQuestionario { protected string Descricao; protected ElementoDoQuestionario(string descricao) { Descricao = descricao; } public abstract void Exibir(); } // bloco (o composto) public class Bloco : ElementoDoQuestionario { private IList<ElementoDoQuestionario> _elementos = new List<ElementoDoQuestionario>(); public IEnumerable<ElementoDoQuestionario> Elementos { get { return _elementos; } } public Bloco(string descricao) : base(descricao) { } public override void Exibir() { Console.WriteLine("Bloco: {0}", Descricao); foreach (var elemento in _elementos) elemento.Exibir(); } public void Adicionar(ElementoDoQuestionario elemento) { _elementos.Add(elemento); } public void Remover(ElementoDoQuestionario elemento) { _elementos.Remove(elemento); } } // questão (a folha) public class Questao : ElementoDoQuestionario { public Questao(string descricao) : base(descricao) { } public override void Exibir() { Console.WriteLine("Questão: {0}", Descricao); } } }
  10. 10. "Considerando o triste estado dos programas de computador, o desenvolvimento de software claramente ainda é uma arte obscura que ainda não pode ser chamada de uma disciplina de engenharia." - Bill Clinton 10
  11. 11. Referências  Padrão de Projeto – Composite - http://padroesdeprojetodesoftware.blogspot.com.br/2012/06/nome-e- classificacao-do-padrao.html  Padrões de Projeto - http://www.cin.ufpe.br/~if718/transparencias/pdf/05- padroesGoF.pdf  Padrões de Projeto - http://www.inf.ufsc.br/~bosco/extensao/NovosTalentos2012/D:/additional/addnlA pps/jhtp6_appM_design_patterns.pdf 11
  12. 12. Obrigado! 12

×