Add the Compactable interface.
[TP_POO.git] / TP2 / Image.java
index 807e11b2aec81d9a3ed836c6fb548fe468209604..62a710ca5a3c64d9f347ff1127fe5f2a2a70b8d7 100644 (file)
@@ -1,18 +1,17 @@
 
-class Image extends Forme {
+class Image extends Forme implements Compactable {
     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;
     }
@@ -38,7 +37,37 @@ class Image extends Forme {
     }
 
     public boolean ajouter(Forme forme) {
-        return false;
+        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);
+        }
     }
 
 }