|
|
(20 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| Material correspondente à aula 22.
| | #REDIRECT [[ist:Composite (padrão de desenho)]] |
| | |
| O padrão ''composite'' organiza os objectos em árvores que representam hierarquias parte-todo. O uso do padrão permite que sejam tratados uniformemente os objectos e as suas composições.
| |
| | |
| == Estrutura ==
| |
| | |
| ==Exemplo==
| |
| | |
| Um restaurante tem empregadas que apresentam menus aos clientes. Cada empregada dispõe de várias ementas, consoante a hora do dia: assim, existem ementas para pequenos almoços, almoços e jantares, por exemplo.
| |
| | |
| Uma implementação simples, definiria na implementação do conceito ''empregada'' as referências para os objectos que representam as ementas.
| |
| | |
| CÓDIGO
| |
| | |
| Esta situação conduz a inflexibilidade na manutenção: por exemplo, a adição de novas refeições implica a alteração das empregadas!
| |
| | |
| Uma possÃvel solução é definir as empregadas como tendo, não dois, três, ou um número concreto de ementas, mas sim como tendo a capacidade de gerir um número indeterminado (uma colecção) de ementas.
| |
| | |
| CÓDIGO
| |
| | |
| Mas o que aconteceria se se quisesse adicionar uma outra ementa apenas a uma das refeições? Por exemplo, adicionar uma ementa de sobremesas ou uma carta de vinhos à ementa do jantar. A solução anterior não tem limitações ao número de ementas que uma empregada pode gerir. No entanto, adicionar uma ementa à colecção não a associa de forma alguma à ementa do jantar: seria necessário alterar o código da empregada para fazer tal associação: uma situação indesejável. A solução passa por utilizar o padrão de composição (''composite''): por um lado a ementa do jantar vai ter uma outra ementa como se fosse mais uma entrada, or outro a empregada trata a ementa do jantar como sempre fez (i.e., sem alterações).
| |
| | |
| CÓDIGO
| |
| | |
| [[category:PO 2005/2006]]
| |