Add the Compactable interface.
[TP_POO.git] / TP2 / Entiers.java
1
2 class Entiers extends Structure {
3 private int int_array[];
4 private int array_size;
5 private int current_size;
6
7 public void setSize(int size) {
8 array_size = size;
9 }
10
11 public int getSize() {
12 return array_size;
13 }
14
15 public void setCurrentSize(int index) {
16 current_size = index;
17 }
18
19 public int getCurrentSize() {
20 return current_size;
21 }
22
23 Entiers(int size) {
24 int_array = new int[size];
25 setSize(size);
26 setCurrentSize(0);
27 }
28
29 public boolean inserer(int value) {
30 if (isFull()) {
31 System.out.println("Tableau plein");
32 return false;
33 }
34 if (isEmpty()) {
35 int_array[0] = value;
36 current_size++;
37 return true;
38 } else {
39 for (int i = 0; i < getCurrentSize(); i++) {
40 if (int_array[i] == value) {
41 return true;
42 } else if (int_array[i] > value) {
43 for (int j = getCurrentSize(); j > i; j--) {
44 int_array[j] = int_array[j - 1];
45 }
46 int_array[i] = value;
47 current_size++;
48 return true;
49 }
50 }
51 }
52 /**
53 * The current value to add is > to all elements in the tab.
54 * So add it at the end.
55 */
56 int_array[getCurrentSize()] = value;
57 current_size++;
58 return true;
59 }
60
61 private int binarySearch(int first, int last, int value) {
62 if (last < first)
63 //FIXME: should not return an integer
64 return -1;
65 int middle = (first + last) / 2;
66 if (value == int_array[middle])
67 return middle;
68 else if (value > int_array[middle])
69 return binarySearch((middle + 1), last, value);
70 return binarySearch(first, (middle -1), value);
71 }
72
73 public boolean supprimer(int value) {
74 if (isEmpty()) {
75 System.out.println("Aucune valeur à supprimer");
76 return false;
77 }
78 for (int i = 0; i < getCurrentSize(); i++) {
79 if (int_array[i] == value) {
80 // Deleting the element in the tab
81 for (int j = i; j < getCurrentSize() - 1; j++) {
82 int_array[j] = int_array[j + 1];
83 }
84 current_size--;
85 return true;
86 }
87 }
88 return true;
89 }
90
91 private boolean isFull() {
92 return (getCurrentSize() >= getSize());
93 }
94
95 private boolean isEmpty() {
96 return (getCurrentSize() == 0);
97 }
98
99 public void afficher() {
100 String className = this.getClass().getSimpleName();
101 System.out.println("---- " + className + " ----");
102 for (int i = 0; i < getCurrentSize(); i++) {
103 System.out.println("element " + i + " : " + int_array[i]);
104 }
105 }
106
107 public void compacter(int nElements) {
108 // Remove the last nElements
109 current_size -= nElements;
110 }
111
112 }