SlideShare uma empresa Scribd logo
1 de 12
Padrões de Projeto
Composite
1
Grupo de Estudo – GETEC | SEDEN
Por : Jorge Emílio
Abordagem - Composite
 Composite
 Aplicabilidade
 Estrutura
 Implementação
 Conclusões
 Referências
2
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
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
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.
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()
Composite – UML 7
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
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);
}
}
}
"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
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
Obrigado!
12

Mais conteúdo relacionado

Semelhante a Composite

Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Ryan Padilha
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design PatternsLucas Simões Maistro
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Ryan Padilha
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosGeorge Mendonça
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 
módulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptxmódulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptxanacatarinacruz4
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Ryan Padilha
 

Semelhante a Composite (20)

Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Controle de Estoque (II)
 
Naked Objects
Naked ObjectsNaked Objects
Naked Objects
 
Java7
Java7Java7
Java7
 
Design pattern
Design patternDesign pattern
Design pattern
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Quick reference
Quick referenceQuick reference
Quick reference
 
UMLIntro.pptx
UMLIntro.pptxUMLIntro.pptx
UMLIntro.pptx
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)Orientação a Objetos no Delphi - Controle de Estoque (III)
Orientação a Objetos no Delphi - Controle de Estoque (III)
 
Aula1
Aula1Aula1
Aula1
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
módulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptxmódulo 6 - dados_estruturados LP.pptx
módulo 6 - dados_estruturados LP.pptx
 
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Por onde começar (I)
 
A linguagem java
A linguagem javaA linguagem java
A linguagem java
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 

Composite

  • 1. Padrões de Projeto Composite 1 Grupo de Estudo – GETEC | SEDEN Por : Jorge Emílio
  • 2. Abordagem - Composite  Composite  Aplicabilidade  Estrutura  Implementação  Conclusões  Referências 2
  • 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. 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. 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. 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()
  • 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. 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. "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. 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