Interface.java

package algorithmen.umleditor;

import java.util.*;

/**
 * Interface defining methods.
 */
public class Interface extends UmlElement {
  
  protected Vector methods;
  
  /**
   * Erzeugt ein neues Objekt vom Typ Interface mit vorgegebenem Namen.
   */
  public Interface(String name) {
    super(name);
    methods = new Vector();
  }
  
  /**
   * Standard-Konstruktor mit Namen "NewInterface"
   */
  public Interface() {
    this("NewInterface");
  }
  
  /**
   * Fügt die Method m der Methodenliste (am Ende) hinzu.
   */
  public void addMethod(Method m) {
    methods.add(m);
  }
  
  /**
   * Entfernt die Method an der Position index aus der Methodenliste.
   */
  public void removeMethod(int index) {
    methods.remove(index);
  }
  
  /*
   * Gibt die Anzahl der Methoden zurück.
   */
  public int getNMethods() {
    return methods.size();
  }
  
  /**
   * Gibt die n-te Methode zurück.
   */
  public Method getMethod(int n) {
    return (Method) methods.get(n);
  }
  
  /**
   * Setzt die n-te Methode.
   */
  public void setMethod(int n, Method f) {
    methods.set(n, f);
  }
  
  /**
   * Gibt die Methodenliste zurück.
   */
  public Vector getMethods() {
    return methods;
  }
  
  /**
   * Ersetzt die komplette Methodenliste.
   */
  public void setMethods(Vector m) {
    methods = m;
  }
  
  /**
   * Liefert eine String-Darstellung eines Interface-Objekts.
   * Typisches Beispiel:
   *    "public interface Drawable {
   *       void draw();
   *       void move(double dx, double dy);
   *    }"
   */
  public String toString() {
    String s = "public interface " + name + " {\n";
    
    // laufe durch die Methodenliste
    for (Iterator i = methods.iterator(); i.hasNext(); ) {
      Method m = (Method) i.next();
      s += "  " + m + ";\n";
    }
    
    s += "}";
    return s;
  }
}