OOP mit Java: Abstrakte Datentypen in Java |
als abstrakte Klasse ohne Implementierungsteil public
abstract
class Stack {
//--------------------
// der Konstruktor
public
Stack() { }
//--------------------
// die Attribut-Funktionen
public
abstract
boolean isEmpty();
public
abstract
int top();
//--------------------
// die modifizierenden Funktionen
public
abstract
Stack push(int e);
public
abstract
Stack pop();
//--------------------
// die Vorbedingungen
public
boolean preTop() {
return
! isEmpty();
}
public
boolean prePop() {
return
! isEmpty();
}
}
|
Gesetze tauchen nicht
in der Klassendefinition auf.
|
|
Vorbedingungen können als
Prädikate implementiert werden.
Dies ist sinnvoll für Tests und Konsistensüberprüfungen. |
|
In Java werden bei verletzten Vorbedingungen meistens
Ausnahmen ausgelöst.
Dies ermöglicht die Trennung von Fehlererkennung und Fehlerbehandlung. |
eine konkrete Implementierung der Stack Klasse class SimpleStack extends Stack{
// die Datenfelder: nicht nach aussen sichtbar
private
int [] a;
private
int i;
//--------------------
// der Konstruktor
public
SimpleStack() {
super(); // redundant
a = new int[20];
i = 0;
}
//--------------------
// die Attribut-Funktionen
public
boolean isEmpty() {
return
i == 0;
}
public
int top() {
return
a[i-1];
}
//--------------------
// die modifizierenden Funktionen
public
Stack push(int e) {
a[i++] = e;
return
this;
}
public
Stack pop() {
--i;
return
this;
}
// Vorbedingungen sind schon implementiert
}
|
Letzte Änderung: 04.05.2014 | © Prof. Dr. Uwe Schmidt |