import java.util.*;

/**
 * 
 * Un'istanza della classe <code>Cestino</code> rappresenta una collezione di prodotti.
 *  &Egrave; possibile che un prodotto compaia nel cestino  pi&ugrave; di una volta.
 *<BR><BR>
 *<strong>NOTE</strong>
*
* <ol> 
*<li> Per rappresentare i prodotti nel cestino possiamo  usare un oggetto    di tipo 
* <code>Collection&lt;E&gt;</code> (tipo generico), dove il parametro <code>E</code> va istanziato con la
* classe <code>Prodotto</code>. 
* Con i tipi  <code>Collection</code> non occorre fissare un limite al massimo numero di elementi.
*</li>
*
*<li> Il tipo <code>Collection&lt;E&gt;</code> &egrave; un'interfaccia.
* Per creare un oggetto di tipo <code>Collection&lt;E&gt;</code>  occorre usare
*  una classe concreta che implementa l'interfaccia
* (vedere la documentazione di <code>Collection&lt;E&gt;</code> nelle API standard di Java).  
*</li>
*
* <li> Su un oggetto di tipo  <code>Collection&lt;E&gt;</code>  &egrave; 
* possibile invocare tutti i metodi previsti dall'interfaccia <code>Collection&lt;E&gt;</code>. 
*</li>
*
*<li> 
* L'interfaccia  <code>Collection&lt;E&gt;</code> estende l'interfaccia
*  <code>Iterable&lt;E&gt;</code>. Di conseguenza, sugli oggetti di tipo  
* <code>Collection&lt;E&gt;</code>  
* &egrave; possibile usare il ciclo <em>for-each</em>.
*</li>
*
*<li> 
* L'implementazione della classe  <code>Cestino</code> &egrave; nascosta.
*  Quando occorre  restituire  un elenco di prodotti,  l'oggetto restituito ha tipo
*  <code>Iterator&lt;Prodotto&gt;</code> (interfaccia).
*
*<BR>
* L'interfaccia  <code>Iterator&lt;E&gt;</code>  permette di rappresentare  un elenco di oggetti
* che pu&ograve; essere attraversato  usando   i metodi <code>hasNext</code> e <code>next</code>.
*
*</li>
*
* </ol>
*/





public class Cestino{


   private Collection<Prodotto>  prodotti; // un cestino e' una collezione di oggetti di  tipo Prodotto





  // COSTRUTTORI 
  
  /**
   *    Costruisce un cestino  vuoto.  
  */ 


    public Cestino() {
	/*
	  prodotti =  Nuovo oggetto di tipo   Collection<Prodotto>  

	 */	

  }
  





  // METODI


 /**
*  Aggiunge al cestino che esegue il metodo il prodotto specificato dall'argomento.
*/
 

    // usare il metodo add dell'interfaccia Collection<E>

    public void add (Prodotto p){
	
    }


 /**
*  Restituisce il costo totale dei prodotti nel  cestino che esegue il metodo.
*/
 

// Con oggetti di tipo Collection<E>  si puo' usare il ciclo for-each 

    public Prezzo getTotale(){
	return null;
    }
 
/**
*  Restituisce un iteratore (un elenco) dei prodotti presenti nel cestino che esegue il metodo. 
*
*
*/
 

    // usare il metodo iterator dell'interfaccia  Collection<E>

    public Iterator<Prodotto> elencoProdotti(){
	return null;
    }


/**
*  Restituisce un iteratore (un elenco) dei prodotti del cestino che esegue il metodo 
*  il cui prezzo &egrave; maggiore del prezzo specificato dall'argomento.
*
*/


/* Occorre creare un oggetto  elenco di tipo  Collection<Prodotto> in cui vanno inseriti i prodotti
   richiesti, quindi va restituito un iterator di elenco.
*/

public Iterator<Prodotto> elencoProdottiMaggioriDi(Prezzo prezzo){
    return null;
}






}// end class
