+import java.util.Comparator;
-class Image extends Forme {
+@ClassPreamble (
+ author = "Jérôme Benoit",
+ date = "09/11/2009"
+)
+public class Image extends Forme implements Compactable,
+ Comparable<Image>,
+ Comparator<Image> {
final int IMAGE_MAX_SIZE = 100;
- Point pOri;
Forme[] formeCollection;
int formeNumber;
Image() {
- pOri = new Point();
+ super();
formeCollection = new Forme[IMAGE_MAX_SIZE];
formeNumber = 0;
}
Image(Point p) {
- pOri = p;
+ super(p);
formeCollection = new Forme[IMAGE_MAX_SIZE];
formeNumber = 0;
}
+ public int getSize() {
+ return formeNumber;
+ }
+
private boolean isEmpty() {
return (formeNumber == 0);
}
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() {
+ String className = this.getClass().getSimpleName();
+ System.out.println("---- " + className + " ----");
+ for (int i = 0; i < formeNumber; i++) {
+ formeCollection[i].afficher();
+ }
+ }
+
+ public void compacter(int nElements) {
+ // Heavy solution
+ /* int minIndex = formeNumber - nElements - 1;
+ for (int i = formeNumber - 1; (i > minIndex && !isEmpty()); i--) {
+ supprimer(i);
+ } */
+ // Lightweight solution
+ if (formeNumber - nElements > 0) {
+ formeNumber -= nElements;
+ } else {
+ formeNumber = 0;
+ }
+ }
+
+ public int compareTo(Image image) {
+ return formeNumber - image.getSize();
+ }
+
+ public int compare(Image image1, Image image2) {
+ return (int)(image1.getpOri().getY() - image2.getpOri().getY());
+ }
+
}