import java.util.Set;

public interface DirectedGraph {
  
  //Einfügen von Kante
  public void addEdge(Object fromNode, Object toNode, double weight);
  
  //Einfügen von Knoten
  public void addNode(Object n);
  
  //Kantengewicht abfragen
  public double getEdgeWeight(Object fromNode, Object toNode);
  
  //Zugriff auf Knoten
  public Set getNodes();
  
  //Zugriff auf Vorgängerknoten
  public Set getPredNodes(Object node);
 
  //Zugriff auf Nachfolgerknoten
  public Set getSuccNodes(Object node);
  
  //Entfernen von Kante
  public void removeEdge(Object fromNode, Object toNode);
  
  //Entfernen von Knoten - der Knoten und alle Verbindungen durch ihn sollten entfernt werden.
  public void removeNode(Object node);


}// end of interface DirectedGraph