package catalogo; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class KitProduto extends Produto { private List produtos = new ArrayList(); // alterei aqui public KitProduto(){ this.produtos = new ArrayList(); } public void addProduto(Produto p) { this.produtos.add(p); } public void removeProduto(Produto p) { this.produtos.remove(p); } public Produto getChild(int num) { return (Produto) this.produtos.get(num); } public BigDecimal getPreco() { BigDecimal total = new BigDecimal(0.0); ListIterator it = (ListIterator) this.produtos.listIterator(); while (it.hasNext()) { total = total.add(((Produto) it.next()).getPreco()); } return total; } public String getDescricao() { String desc = null; ListIterator it = (ListIterator) this.produtos.listIterator(); while (it.hasNext()) { desc = desc + " " + ((Produto) it.next()).getDescricao(); } return (String) desc; } } ========================================================================================== package catalogo; import java.math.BigDecimal; public abstract class ProdutoDecorator extends Produto { private Produto produtodecorado; public ProdutoDecorator(Produto p) { this.produtodecorado = p; } public BigDecimal getPreco() { return this.produtodecorado.getPreco(); } public String getDescricao() { return this.produtodecorado.getDescricao(); } } ================================================================== package catalogo; import java.math.BigDecimal; public abstract class Produto { private String descricao; private String codigo; public abstract BigDecimal getPreco(); public abstract String getDescricao(); public void addProduto (Produto p) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } public void removeProduto (Produto p) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } public Produto getChild(int num) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } }