Correction exercice 2

/**
 * Je gere un stock d'objets instances de Product et ma taille est
 * fixee a ma creation.
 * @author F.Dagnat
 */
public interface Stock {
    
    /** permet de savoir si le stock est vide */ 
    public boolean isEmpty();
    
    /** permet de connaitre le nombre de produits dans le stock */ 
    public int getSize();
    
    /** rajoute un produit dans le stock 
     * @param p  le produit qui est rajoute
     */  
    public void add(Product p);
    
    /** retire le <b>dernier</b> produit ajoute au stock et le rend en
     * resultat
     */ 
    public Product remove();
  
    /** permet de savoir si le stock plein */ 
    public boolean isFull(); 
   
    /** rend une chaine de caracteres decrivant le stock */ 
    public String toString();
}
/**
 * Je gere un stock d'objet instance de Product sous la forme d'un
 * tableau.  Je realise l'interface Stock. Ma taille est fixee a ma
 * creation.
 * @authors A.Beugnard R.Ogor F.Dagnat J. Mallet B. Prou
 */
public class StockArray implements Stock {

    /** le tableau contenant les produits */
    private Product[] content;
    /** le nombre de produits dans le stock */
    private int size;
      
    /** Construit un stock dont la capacite est donnee par s
     * @param s la taille du stock
     */
    public StockArray(int s) {
        content = new Product[s];
    }
      
    /** rajoute un nouveau produit dans le stock
     * @param p le produit qui est rajoute
     */
    public void add(Product p) {
        if (p==null) return;
        content[size] = p;
        size++;
    }

    /**
     * Retire le <b>dernier</b> produit ajoute au Stock et le rend en
     * resultat
     */
    public Product remove() {
        int lastProductIndex = this.size-1; // Get the index of the last product in stock
        Product p = this.content[lastProductIndex];
        this.content[lastProductIndex] = null;
        this.size -= 1; // Decrease size of stock by one
        return p;
    }


    /** permet de savoir si le stock est plein */
    public boolean isFull() { return size == content.length; }

    /** permet de savoir si le stock est vide */
    public boolean isEmpty() { return size == 0; }

    /** permet de savoir le nombre d'elements dans le stock */
    public int getSize() { return size; }

    /** rend une chaine de caracteres decrivant le stock */
    public String toString() {
        if (isEmpty()) return "Le stock est vide.";
        String s = "Le stock contient : ";
        for (int i = 0; i < size; i++)
            s += "\n\t" + content[i];
        return s;
    }

    public static void main(String[] args) {
        Stock s = new StockArray(8);
        System.out.println("Stock Vide : " + s.isEmpty());
        System.out.println("Stock Plein : "+ s.isFull());
        System.out.println(s);
        s.add(new Product("p1"));
        System.out.println("Stock Vide : " + s.isEmpty());
        System.out.println(s);
        s.add(new Product("p2"));
        System.out.println(s);
        System.out.println(s.remove() + " est retire du stock !");
        Product p = new Product("p3");
        s.add(p);
        System.out.println(s);
        System.out.println(p + " est retire du stock !");
        s.remove();
        System.out.println(s);
        System.out.println("Nous allons ajouter 13 produits dans le stock.");
        int num = 0;
        for(int i = 1; i <= 13; i++) {
            if (!s.isFull()) {
                s.add(new Product("ppp"+i));
                num++;
            }
        }
        System.out.println(s);
        System.out.println("En fait, nous avons ajoute " + num + " produits.");
    }
}