Correction exercice 3

/**
 * Un Stock d'instances de Product dont la taille est fixee a la
 * creation.
 * 
 * @author F.Dagnat, J. Mallet
 * @version 2
 */
public class Stock {
    /** taille par defaut du tableau de produits **/
    private final int DEFAULT_SIZE = 1;

    /**
     * Tableau contenant les produits de ce Stock
     */
    private Product[] content;

    /** Nombre de produits deposes */
    private int size = 0;

    /**
     * Constructeur avec comme parametre la taille du Stock
     * 
     * @param s la taille du Stock
     */
    public Stock(int s) {
        if (s > 0) {
            this.content = new Product[s];
        }
        else {
            this.content = new Product[DEFAULT_SIZE];
        }
    }

    /**
     * Rajoute un nouveau produit dans le Stock
     * 
     * @param p le produit qui est rajoute
     */
    public void add(Product p) {
        if (p == null)
            return;
        this.content[this.size] = p;
        this.size++;
    }

    /**
     * Permet de connaitre le nombre de produits dans le Stock
     */
    public int getSize() {
        return this.size;
    }

    /** Permet de savoir si le Stock est vide */
    public boolean isEmpty() {
        return this.size == 0;
    }

    /** Permet de savoir si le Stock plein */
    public boolean isFull() {
        return this.size == this.content.length;
    }

    /**
     * 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;
    }

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

    public static void main(String[] args) {
        Stock s = new Stock(8);
        System.out.println("Stock Vide : " + s.isEmpty() + ", 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 !");
        s.add(new Product("p3"));
        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.");
    }
}