suivant: Figures et dessins
monter: Exemple: une pile
précédent: pile abstraite
  Table des matières
Pour s'habituer au langage, on va donner une réalisation de piles en java.
Concernant cette implémentations, plusieurs remarques:
- Interface (abstraite) Pile et réalisation
MaPile (Concrete)
- utilisation de Object pour pouvoir construire des piles
avec n'importe quel
objet: tout objet est un Object,
- la classe Object permet une forme de ``généricité'' du
type, il n'y a pas en Java de possibilité directe de ``paramétrer''
un type
(mécanisme différent concernant la vérification du typage),
- un constructeur MaPile,
- utilisation de la classe Vector qui permet d'avoir des
tableaux dont la taille peut varier,
- package import java.util.* pour Vector,
- contrôle de la visibilité par private et public,
- instanciation par new,
- finalize ramasse-miettes,
- utilisation de l'exception EmptyStackException
si les préconditions ne sont pas réalisées,
- synchronized pour le ``multi-threading'',
- package import java.util.* pour Vector.
transparent
Une interface pile
import java.util.*;
interface Pile{
public Object empiler(Object item);
public Object dépiler();
public boolean estVide();
}
transparent
Une implémentation de pile
import java.util.*;
public class MaPile implements Pile{
private Vector items;
public MaPile(){items = new Vector(10);}
public Object empiler(Object item){
items.addElement(item);
return item;
}
public synchronized Object dépiler(){
int len = items.size();
Object item = null;
if (len == 0)
throw new EmptyStackException();
item = items.elementAt(len - 1);
items.removeElementAt(len - 1);
return item;
} // ...
transparent
MaPile suite...
// suite
public boolean estVide(){
return (items.size() == 0);
}
protected void finalize() throws Throwable {
items = null; super.finalize();
}
}
transparent
Main
class Main{
public static void main(String[] args){
Pile p=new MaPile();
for(int i=0; i<10; i++)
p.empiler(new Integer(i*i));
while(! p.estVide())
System.out.println(p.dépiler());
}
}
- classe Main pour utiliser la classe,
- instanciation de Pile
- Integer classe pour les entiers
- public static void main le main
suivant: Figures et dessins
monter: Exemple: une pile
précédent: pile abstraite
  Table des matières
Hugues Fauconnier
2002-01-11