homedukeOOP mit Java: Abstrakte Datentypen in Java Prof. Dr. Uwe Schmidt FH Wedel

Abstrakte Datentypen in Java

weiter

weiter

Beispiel: ein Stack 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();
  }
}
 
 
weiter
merke
Gesetze tauchen nicht in der Klassendefinition auf.
merke
Vorbedingungen können als Prädikate implementiert werden.
Dies ist sinnvoll für Tests und Konsistensüberprüfungen.
merke
In Java werden bei verletzten Vorbedingungen meistens Ausnahmen ausgelöst.
Dies ermöglicht die Trennung von Fehlererkennung und Fehlerbehandlung.

weiter

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
Prof. Dr. Uwe Schmidt FH Wedel