Compositor
Programação Orientada a Objetos Padrões de Projeto COMPOSITE
Giancarlo Santana Batista Fleuri 110935 Prof. Marcos Wagner Souza Ribeiro
Junho – 2012 Jataí - GO
Programação Orientada a Objetos 2012 – Turma IV de Ciências da Computação - CAJ-UFG
COMPOSITE
Intenção
Compor objetos em estruturas de árvore para representarem hierarquias partes-todo. Composite permite aos clientes tratarem de maneira uniforme objetos individuais e composições dos objetos.
Motivação
Aplicações gráficas, tais como editores de desenhos e sistemas de captura esquemática, permitem aos usuários construir diagramas complexos a partir de componentes simples O usuário pode agrupar componentes para formar componentes maiores, os quais, por sua vez, podem ser agrupados para formar componentes ainda maiores. Uma implementação simples poderia definir classes para primitivas gráficas, tais como Texto e linhas, atém de outras classes que funcionam como recipientes (Containers) para essas primitivas. Porém, há um problema com essa abordagem: o código que usa essas classes deve tratar objetos primitivos e objetos recipientes de modo diferente, mesmo se na maior parte do tempo o usuário os trata de forma idêntica. Ter que distinguir entre esses objetos torna a aplicação mais complexa, O padrão Composite descreve como usar a composição recursiva de maneira que os clientes não tenham que fazer essa distinção.
Programação Orientada a Objetos 2012 – Turma IV de Ciências da Computação - CAJ-UFG
A chave para o padrão Composite é uma classe abstrata que representa tanto as primitivas como os seus recipientes. Para o sistema gráfico, esta classe é Graphic. A Graphic declara operações tomo Draw, qué são específicas de objetos gráficos, Ela também declara operações que todos os objetos compostos compartilham, tais como operações para acessar e administrar seus filhos. As subclasses Line, Rectangle e Text (ver diagrama