Lecture overview -- Keyboard shortcut: 'u'  Previous page: Abstrakte metoder i Java -- Keyboard shortcut: 'p'  Next page: Eksempel: Comparable -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 7 : 26
Forelæsningsnoter i Objekt-orienteret Programmering
Design af klassehierarkier
Eksempel: Stakken igen

Vi vender her tilbage til stak eksemplet. Vores primære ærinde er at se på en konkret specialisering af den abstrakte klase Stack.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/klasse-design/AbstractClassEx.javaDen abstrakte klasse Stack igen.

Den abstrakte klasse Stack igen.

class UnboundedStack extends Stack{

  private int topIndex;
  private Vector store;

  public UnboundedStack(){
    store = new Vector(100);
    topIndex = 0;
  }

  public void push(Object el){
    if (topIndex > store.capacity() - 5)
       store.ensureCapacity(store.capacity() + 100);
    if (! full()){  
      store.add(topIndex, el);
      topIndex = topIndex + 1;
    }
  }
     
  public void pop(){
    if (! empty()){
      topIndex = topIndex - 1;
    }
  }

  public Object top(){
    if (!empty()){
      return (store.elementAt(topIndex - 1));
    } 
    else return (null);
  }
 
  public boolean full(){
    return false;
  }

  public boolean empty(){
    return(topIndex <=  0);
  }
    
  public int size(){
    return (topIndex);
  }

  private String stackContents(){
    StringBuffer st = new StringBuffer();
    for (int i = topIndex - 1 ; i >= 0; i--){
      st.append(store.elementAt(i).toString());
      st.append(".");
    }
      
    return (st.toString());
  }

  public String toString(){
    return(super.toString() + ": " +  stackContents());
  }
} // end UnboundedStack

En konkret specialisering af Stack uden øvre begrænsning, baseret på klassen Vector. De grønne dele er nytilføjede data i klassen. Den abstrakte klasse havde ingen data erklæringer overhovedet. Den brune del implementerer konstruktorern for UnboundedStack. De blå dele implementerer de abstrakte metoder. Den lilla del redefinerer toString metoden.

/user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/klasse-design/AbstractClassEx.javaEt eksempel på en anvendelse af klassen UnboundedStack.

Et eksempel på en anvendelse af klassen UnboundedStack. Programmet udskriver 'Stack: 3.1.' svarende til at toppen af stakken er 3, og 'bunden' er 1.