Créer la classe abstraite Stack qui contient les classes abstraites:
Object
get();
void put(Object);
Classe Stack:
abstract class Stack{
Vector v=new
Vector();
abstract Object get();
abstract
void put(Object o);
}
Implémenter cette classe de deux façons: par une classe FIFOStack puis par une classe LIFOStack selon le comportement de pile désiré
Classe FIFOStack:
class FIFOStack extends
Stack{
Object get(){
if
( v.size()>0 ){
Object
o=v.elementAt(0);
v.removeElementAt(0);
return
o;
}
else{
return
null;
}
}
void
put(Object o){
v.addElement(o);
}
}
Classe LIFOStack:
class LIFOStack extends
Stack{
Object get(){
if
( v.size()>0 ){
Object
o=v.elementAt(v.size()-1);
v.removeElementAt(v.size()-1);
return
o;
}
else{
return
null;
}
}
void
put(Object o){
v.addElement(o);
}
}
Pour tester:
class Test{
public
static void main(String[] s){
FIFOStack
f=new
FIFOStack();
f.put("1");
f.put("2");
f.put("3");
LIFOStack
l=new
LIFOStack();
l.put("1");
l.put("2");
l.put("3");
System.out.println("FIFO:");
for
( int
i=0;i<3;i++){
System.out.println(f.get());
}
System.out.println("LIFO:");
for
( int
i=0;i<3;i++){
System.out.println(l.get());
}
}
}
Transformez la classe Stack pour qu'elle devienne une interface qui est implémentée par les classes FIFOStack et LIFOStack.
Interface Stack:
interface Stack{
static final Vector v=new
Vector();
Object get();
void
put(Object o);
}
Implémenter cette classe de deux façons: par une classe FIFOStack puis par une classe LIFOStack selon le comportement de pile désiré
Classe FIFOStack:
class FIFOStack implements
Stack{
public Object get(){
if
( v.size()>0 ){
Object
o=v.elementAt(0);
v.removeElementAt(0);
return
o;
}
else{
return
null;
}
}
public
void put(Object o){
v.addElement(o);
}
}
Classe LIFOStack:
class LIFOStack implements
Stack{
public Object get(){
if
( v.size()>0 ){
Object
o=v.elementAt(v.size()-1);
v.removeElementAt(v.size()-1);
return
o;
}
else{
return
null;
}
}
public
void put(Object o){
v.addElement(o);
}
}
Remarque: Les méthodes get() et put() doivent être déclarées public pour éviter que leurs privilèges soit moindres que ceux de l'interface Stack dont les méthodes sont public par défaut.
De quels type(s) sont les instances de FIFOStack et LIFOStack ?
Une instance de FIFOStack est de type: FIFOStack, Object et Stack.