Listing 18: Assembly.java

import java.util.*;

public class Assembly implements Part
{
   public Assembly(String partNumber, 
                   String description)
   {
      itsPartNumber = partNumber;
      itsDescription = description;
   }

   public void accept(PartVisitor v)
   {
      v.visit(this);
      Iterator i = getParts();
      while (i.hasNext())
      {
         Part p = (Part)i.next();
         p.accept(v);
      }
   }
   public void add(Part part)
   {
      itsParts.add(part);
   }

   public Iterator getParts()
   {
      return itsParts.iterator();
   }

   public String getPartNumber()
   {
      return itsPartNumber;
   }

   public String getDescription()
   {
      return itsDescription;
   }

   private List itsParts = new LinkedList();
   private String itsPartNumber;
   private String itsDescription;
}
— End of Listing —