TP2: add class annotations.
[TP_POO.git] / TP2 / Image.java
index 37bc6c3fc4d6b724c94db174b78f3e3bd79a8670..c2b0b84d7f758b70e7bcc0d66675bf954ec9ba64 100644 (file)
@@ -1,5 +1,12 @@
+import java.util.Comparator;
 
-class Image extends Forme implements Compactable {
+@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;
     Forme[] formeCollection;
     int formeNumber;
@@ -16,6 +23,10 @@ class Image extends Forme implements Compactable {
         formeNumber = 0;
     }
 
+    public int getSize() {
+        return formeNumber;
+    }
+
     private boolean isEmpty() {
         return (formeNumber == 0);
     }
@@ -67,10 +78,25 @@ class Image extends Forme implements Compactable {
     }
 
     public void compacter(int nElements) {
-        int minIndex = formeNumber - nElements - 1;
+        // 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());
+    }
+
 }