X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=blobdiff_plain;f=TP2%2FImage.java;h=37bc6c3fc4d6b724c94db174b78f3e3bd79a8670;hp=807e11b2aec81d9a3ed836c6fb548fe468209604;hb=0f1b20188428cc8f90cb68ec4775f0b67be0c077;hpb=a988a46e0446d611bf97c2c6b1288a1befd2d4a7 diff --git a/TP2/Image.java b/TP2/Image.java index 807e11b..37bc6c3 100644 --- a/TP2/Image.java +++ b/TP2/Image.java @@ -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,40 @@ 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() { + String className = this.getClass().getSimpleName(); + System.out.println("---- " + className + " ----"); + for (int i = 0; i < formeNumber; i++) { + formeCollection[i].afficher(); + } + } + + public void compacter(int nElements) { + int minIndex = formeNumber - nElements - 1; + for (int i = formeNumber - 1; (i > minIndex && !isEmpty()); i--) { + supprimer(i); + } } }