Softwaredesign: Beispiel: Adapter für eine Liste |
abstract
public
class List {
// ein Attribut
abstract
public
int len();
//--------------------
// ein Praedikat mit default-Implementierung
// --> abstrakte Klasse, nicht Interface
public
boolean isEmpty() {
return
len() == 0;
}
//--------------------
// Selektor auf das 1. Element
// mit default-Implementierung
public
Object hd() {
return
at(0);
}
//--------------------
// allgemeiner Selektor
abstract
public
Object at(int i);
//--------------------
// veraendernde Methoden
// Kopf loeschen
abstract
public
List tl();
//--------------------
// Element anhaengen
abstract
public
List append(Object e);
}
|
public
class ListAsJavaVector extends List {
protected
java.util.Vector v; // <-- die Referenz
//--------------------
public
ListAsJavaVector() {
v = new java.util.Vector();
}
//--------------------
public
int len() {
return
v.size();
}
//--------------------
// nur zur Laufzeitoptimierung
public
boolean isEmpty() {
return
v.isEmpty();
}
//--------------------
// nur zur Laufzeitoptimierung
public
Object hd() {
return
v.firstElement();
}
//--------------------
public
Object at(int i) {
return
v.elementAt(i);
}
//--------------------
public
List tl() {
v.removeElementAt(0);
return
this;
}
//--------------------
public
List append(Object e) {
v.addElement(e);
return
this;
}
}
|
Letzte Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidt |