Programmation Java 1A - TP17
Pile et Stack

Exercice 1. Pile de nombres

1. Ecrire une classe PileDeReels ayant pour attributs un entier sommet et un tableau elements de double.
    Ecrire un constructeur prenant en argument la hauteur maximale de la pile.
    Ecrire les méthodes valeurSommet() qui retourne la valeur située au sommet de la pile, empiler(double d) et depiler() qui permettent d'ajouter ou de retirer une valeur dans la pile (et ne retournent rien), estVide() et estPleine() qui retournent chacune un booléen indiquant si la pile est vide ou non, ou si la pile est pleine ou non.
    Remarque : dans les cas où la pile est vide, il vaut mieux que la méthode valeurSommet() ne renvoie pas de valeur ; pour cela, on peut utiliser l'instruction : throw new RuntimeException("description de l'erreur"); (vous apprendrez en deuxième année le fonctionnement précis des exceptions en Java).

2. Ecrire une méthode main() dans la classe PileDeReels pour tester les différentes méthodes de la classe. On pourra par exemple créer une pile de 3 éléments, tester si la pile ainsi créée est vide, empiler trois valeurs, tester si la pile est pleine, puis essayer d'empiler une autre valeur, d'afficher et de dépiler quatre valeurs...

Exercice 2. Classe Stack

Regarder dans la documentation Java l'aide de la classe Stack.
Quel type de variable peut-on stocker dans un Stack ?
Quand on dépile un élément, quel type d'objet obtient-on ?

Ecrire une classe StackDeReels sur le même modèle que la classe PileDeReels mais avec en attribut un seul objet de type Stack.
Recopier la méthode main() de l'exercice 1. pour tester les différentes méthodes (il vous suffit normalement de changer UNIQUEMENT la déclaration de votre pile : StackDeReels au lieu de PileDeReel)

ATTENTION : la classe StackDeReels doit avoir exactement les mêmes méthodes que la classe PileDeReels ; par exemple, la méthode getSommet() renvoie un double (et non pas un Double ou un Object).
Vous pourrez utiliser la classe Double qui permet de stocker un nombre réel sous la forme d'un objet. Regardez la documentation de la classe Double, en particulier la méthode doubleValue().