class Image extends Forme implements Compactable { final int IMAGE_MAX_SIZE = 100; Forme[] formeCollection; int formeNumber; Image() { super(); formeCollection = new Forme[IMAGE_MAX_SIZE]; formeNumber = 0; } Image(Point p) { super(p); formeCollection = new Forme[IMAGE_MAX_SIZE]; formeNumber = 0; } private boolean isEmpty() { return (formeNumber == 0); } private boolean isFull() { return (formeNumber >= formeCollection.length); } public void dessiner(Piletransformations pile) { for (int i = 0; i < formeNumber; i++) { formeCollection[i].dessiner(pile); } } public void deplacer(Point p) { for (int i = 0; i < formeNumber; i++) { formeCollection[i].deplacer(p); } } public boolean ajouter(Forme forme) { boolean rtVal = false; if (!isFull()) { formeCollection[formeNumber] = forme; formeNumber++; rtVal = true; } return rtVal; } public boolean supprimer(int index) { boolean rtVal = false; if (!isEmpty()) { for (int j = index; (j < formeNumber - 1 && index < formeNumber); j++) { formeCollection[j] = formeCollection[j + 1]; } rtVal = true; formeNumber--; } return rtVal; } public void afficher() { for (int i = 0; i < formeNumber; i++) { formeCollection[i].afficher(); } } public void compacter(int nElements) { for (int i = formeNumber - 1; (i > formeNumber - nElements && !isEmpty()); i--) { supprimer(i); } } }