Exercice : Adapter Pile Stack

Code source de l'énoncé

Soit l'interface PileI :
public interface PileI<E>{
    public void empiler(E e);
    public E depiler();
    public boolean estVide();
}
On ne dispose pas d'implémentation de PileI,
mais on a une implémentation d'une autre interface, StackI :
public interface StackI<E>{
    public void push(E e);
    public E pop();
    public boolean isEmpty();
}
Une équipe de programmeurs francophones souhaite continuer à utiliser dans leur code
l'interface PileI mais voudrait utiliser l'implémentation de StackI.

La classe Stack1 fournit une implémentation de StackI.

Ecrivez deux implémentations de la classe StackAdapter :
  1. une implémentation utilisant l'héritage,
  2. une implémentation utilisant la composition.
Dans les deux cas, à l'exécution on doit bien utiliser l'implémentation de Stack1 avec le vocabulaire de PileI :
java Main
Stack1.push()
Stack1.pop()
Stack1.isEmpty()