X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=blobdiff_plain;f=TP2%2FImage.java;h=65d0929e69f9cadae3daa7096ad43b3f9d5d2edf;hp=b2efe6e06bc603dc4f7a1d78c8838b109880186d;hb=a8276a31e5cfa00657738bb5803438fa82752d15;hpb=54d3f5b36181762091ed310b362ec21356284e60 diff --git a/TP2/Image.java b/TP2/Image.java index b2efe6e..65d0929 100644 --- a/TP2/Image.java +++ b/TP2/Image.java @@ -1,5 +1,8 @@ +import java.util.Comparator; -class Image extends Forme { +public class Image extends Forme implements Compactable, + Comparable, + Comparator { final int IMAGE_MAX_SIZE = 100; Forme[] formeCollection; int formeNumber; @@ -16,6 +19,10 @@ class Image extends Forme { formeNumber = 0; } + public int getSize() { + return formeNumber; + } + private boolean isEmpty() { return (formeNumber == 0); } @@ -46,10 +53,46 @@ class Image extends Forme { 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()); + } + }