package shapes.composite; import java.util.LinkedList; import java.util.List; import shapes.visitor.Visitor; public class CompositeShape extends Shape { private List shapes; public CompositeShape ( ) { shapes = new LinkedList ( ); } @Override public double getArea() { // TODO Auto-generated method stub return 0; } public CompositeShape add (Shape shape) { shapes.add ( shape ); return this; // for telescoping syntax } public CompositeShape remove (Shape shape) { shapes.remove( shape ); return this; // for telescoping syntax } @Override public void accept(Visitor v) { v.visitCompositeStart(this); for (Shape shape: shapes) shape.accept(v); v.visitCompositeEnd(this); } @Override public void draw() { // TODO Auto-generated method stub } @Override public void print() { // TODO Auto-generated method stub System.out.println ("Composite start"); for (Shape shape: shapes) shape.print(); System.out.println ("Composite end"); } }