exo1: rename an attribute.
[Project_POO.git] / exo1 / Pile.java
CommitLineData
6392c37e
JB
1import java.lang.reflect.Array;
2
3/**
4 *
5 */
6public class Pile<E> {
7 private E[] array;
8 private int array_size;
f1809579 9 private int head_index;
6392c37e
JB
10
11 /**
12 * set the size of the internal array
13 * @param int size the size of the array
14 */
15 public void setSize(int size) {
16 array_size = size;
17 }
18
19 /**
20 * get the size of the internal array
21 * @return the integer size of the internal array
22 */
23 public int getSize() {
24 return array_size;
25 }
26
27 /**
28 * set the stack head index
29 * @param int index the stack head index
30 */
31 public void setHeadIndex(int index) {
f1809579 32 head_index = index;
6392c37e
JB
33 }
34
35 /**
36 * get the stack head current index
37 * @return the integer stack head index
38 */
271cd3c9 39 public int getHeadIndex() {
f1809579 40 return head_index;
6392c37e
JB
41 }
42
43 /**
44 * [Pile description]
45 * @param int size [description]
46 */
47 @SuppressWarnings("unchecked")
48 Pile(int size) {
49 array = (E[])new Object[size];
50 setSize(size);
51 setHeadIndex(0);
52 }
53
54 /**
55 * [Pile description]
56 * @param int size [description]
57 */
58 @SuppressWarnings("unchecked")
59 Pile(Class<E[]> cl, int size) {
60 array = (E[])Array.newInstance(cl, size);
61 setSize(size);
62 setHeadIndex(0);
63 }
64
65 /**
66 * [empiler description]
67 * @param int value [description]
68 */
69 public void empiler(E value) {
70 if (!plein()) {
f1809579
JB
71 array[head_index] = value;
72 head_index++;
6392c37e
JB
73 } else {
74 System.out.println("La pile est pleine");
75 }
76 }
77
78 /**
79 * [depiler description]
80 * @return [description]
81 */
82 public E depiler() {
83 if (!vide()) {
f1809579
JB
84 head_index--;
85 return array[head_index];
6392c37e
JB
86 } else {
87 return null;
88 }
89 }
90
91 /**
92 * [plein description]
93 * @return [description]
94 */
95 private boolean plein() {
96 return (getHeadIndex() >= getSize());
97 }
98
99 /**
100 * [vide description]
101 * @return [description]
102 */
103 private boolean vide() {
104 return (getHeadIndex() == 0);
105 }
106
107 /**
108 * [afficher description]
109 */
110 public void afficher() {
111 for (int i = 0; i < getHeadIndex(); i++) {
112 System.out.println("element " + i + " " + array[i]);
113 }
114 }
115
6392c37e 116}