TP2: Implement Image class as a Comparable<Image> interface.
[TP_POO.git] / TP2 / Image.java
CommitLineData
a988a46e 1
1ace8736 2class Image extends Forme implements Compactable, Comparable<Image> {
a988a46e 3 final int IMAGE_MAX_SIZE = 100;
a988a46e
JB
4 Forme[] formeCollection;
5 int formeNumber;
6
7 Image() {
009c5b1e 8 super();
a988a46e
JB
9 formeCollection = new Forme[IMAGE_MAX_SIZE];
10 formeNumber = 0;
11 }
12
13 Image(Point p) {
009c5b1e 14 super(p);
a988a46e
JB
15 formeCollection = new Forme[IMAGE_MAX_SIZE];
16 formeNumber = 0;
17 }
18
1ace8736
JB
19 public int getSize() {
20 return formeNumber;
21 }
22
a988a46e
JB
23 private boolean isEmpty() {
24 return (formeNumber == 0);
25 }
26
27 private boolean isFull() {
28 return (formeNumber >= formeCollection.length);
29 }
30
31 public void dessiner(Piletransformations pile) {
32 for (int i = 0; i < formeNumber; i++) {
33 formeCollection[i].dessiner(pile);
34 }
35 }
36
37 public void deplacer(Point p) {
38 for (int i = 0; i < formeNumber; i++) {
39 formeCollection[i].deplacer(p);
40 }
41 }
42
43 public boolean ajouter(Forme forme) {
145c683d
JB
44 boolean rtVal = false;
45 if (!isFull()) {
46 formeCollection[formeNumber] = forme;
f8ac3cd5 47 formeNumber++;
145c683d
JB
48 rtVal = true;
49 }
50 return rtVal;
a988a46e
JB
51 }
52
5731ae5f
JB
53 public boolean supprimer(int index) {
54 boolean rtVal = false;
55 if (!isEmpty()) {
56 for (int j = index; (j < formeNumber - 1 && index < formeNumber); j++) {
57 formeCollection[j] = formeCollection[j + 1];
58 }
59 rtVal = true;
60 formeNumber--;
61 }
62 return rtVal;
63 }
64
54d3f5b3 65 public void afficher() {
0f1b2018
JB
66 String className = this.getClass().getSimpleName();
67 System.out.println("---- " + className + " ----");
54d3f5b3
JB
68 for (int i = 0; i < formeNumber; i++) {
69 formeCollection[i].afficher();
70 }
71 }
72
97929775 73 public void compacter(int nElements) {
38098a56
JB
74 // Heavy solution
75 /* int minIndex = formeNumber - nElements - 1;
0f1b2018 76 for (int i = formeNumber - 1; (i > minIndex && !isEmpty()); i--) {
5731ae5f 77 supprimer(i);
38098a56
JB
78 } */
79 // Lightweight solution
80 if (formeNumber - nElements > 0) {
81 formeNumber -= nElements;
82 } else {
83 formeNumber = 0;
5731ae5f 84 }
97929775
JB
85 }
86
1ace8736
JB
87 public int compareTo(Image image) {
88 return formeNumber - image.getSize();
89 }
90
a988a46e 91}