X-Git-Url: https://git.piment-noir.org/?p=TP_POO.git;a=blobdiff_plain;f=TP2%2FImage.java;h=d508e75d4fc647d58f38bfa97432a46c8d29c4ff;hp=62a710ca5a3c64d9f347ff1127fe5f2a2a70b8d7;hb=36a82657f0caabbe4abcf2153dff10014e2119b8;hpb=5731ae5f40887e5a299eeca6d9047c06cd17ab41 diff --git a/TP2/Image.java b/TP2/Image.java index 62a710c..d508e75 100644 --- a/TP2/Image.java +++ b/TP2/Image.java @@ -1,5 +1,6 @@ +import java.util.Comparator; -class Image extends Forme implements Compactable { +public class Image extends Forme implements Compactable, Comparable, Comparator { final int IMAGE_MAX_SIZE = 100; Forme[] formeCollection; int formeNumber; @@ -16,6 +17,10 @@ class Image extends Forme implements Compactable { formeNumber = 0; } + public int getSize() { + return formeNumber; + } + private boolean isEmpty() { return (formeNumber == 0); } @@ -59,15 +64,33 @@ class Image extends Forme implements Compactable { } 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) { - for (int i = formeNumber - 1; (i > formeNumber - nElements && !isEmpty()); i--) { + // 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 image1.getSize() - image2.getSize(); + } + }