Die Klasse Graph
Die Klasse
Graph stellt
einen ungerichteten, kantengewichteten Graphen dar.
Es können Knoten-
und Kantenobjekte hinzugefügt und entfernt, flache Kopien der Knoten- und
Kantenlisten des Graphen angefragt und Markierungen von Knoten und Kanten
gesetzt und überprüft werden. Des Weiteren kann eine
Liste der Nachbarn eines bestimmten Knoten, eine Liste der inzidenten Kanten
eines bestimmten Knoten und die Kante von einem bestimmten Knoten zu einem
anderen Knoten angefragt werden. Abgesehen davon kann abgefragt werden, welches
Knotenobjekt zu einer bestimmten ID gehört und ob der Graph leer ist.
Dokumentation der Klasse Graph
Konstruktor Graph()
Ein Objekt vom Typ Graph
wird erstellt. Der von diesem Objekt repräsentierte Graph ist leer.
Auftrag void addVertex(Vertex pVertex)
Der Auftrag fügt den Knoten pVertex vom Typ Vertex
in den Graphen ein, sofern es noch keinen Knoten mit demselben
ID-Eintrag wie pVertex im Graphen gibt und pVertex eine ID ungleich null hat. Ansonsten passiert
nichts.
Auftrag void
addEdge(Edge
pEdge)
Der Auftrag fügt die Kante pEdge in den Graphen ein, sofern
beide durch die Kante verbundenen Knoten im Graphen enthalten sind, nicht
identisch sind und noch keine Kante zwischen den beiden Knoten existiert.
Ansonsten passiert nichts.
Auftrag void removeVertex(Vertex pVertex)
Der Auftrag entfernt den Knoten pVertex aus dem Graphen und löscht alle
Kanten, die mit ihm inzident sind. Ist der Knoten pVertex nicht im Graphen enthalten,
passiert nichts.
Auftrag void
removeEdge(Edge
pEdge)
Der Auftrag entfernt die Kante pEdge aus dem Graphen. Ist die Kante pEdge nicht im Graphen enthalten,
passiert nichts.
Anfrage Vertex getVertex(String pID)
Die Anfrage liefert das Knotenobjekt mit pID als ID. Ist ein solches
Knotenobjekt nicht im Graphen enthalten, wird null
zurückgeliefert.
Anfrage List<Vertex> getVertices()
Die Anfrage liefert eine neue Liste aller Knotenobjekte vom Typ List<Vertex>. Enthält der
Graph keine Knotenobjekte, so wird eine leere Liste zurückgeliefert.
Anfrage List<Vertex> getNeighbours(Vertex
pVertex)
Die Anfrage liefert alle Nachbarn des Knotens pVertex als neue Liste vom Typ List<Vertex>. Hat der
Knoten pVertex keine Nachbarn in diesem
Graphen oder ist gar nicht in diesem Graphen enthalten, so wird eine leere
Liste zurückgeliefert.
Anfrage List<Edge> getEdges()
Die Anfrage liefert eine neue Liste aller Kantenobjekte vom Typ List<Edge>. Enthält der
Graph keine Kantenobjekte, so wird eine leere Liste zurückgeliefert.
Anfrage List<Edge> getEdges(Vertex pVertex)
Die Anfrage liefert eine neue Liste aller inzidenten Kanten zum
Knoten pVertex.
Hat der Knoten pVertex keine inzidenten Kanten in
diesem Graphen oder ist gar nicht in diesem Graphen enthalten, so wird eine
leere Liste zurückgeliefert.
Anfrage Edge getEdge(Vertex pVertex, Vertex pAnotherVertex)
Die Anfrage liefert die Kante, welche die Knoten pVertex und pAnotherVertex verbindet, als Objekt vom Typ Edge. Ist der Knoten pVertex oder der Knoten pAnotherVertex nicht im Graphen enthalten oder
gibt es keine Kante, die beide Knoten verbindet, so wird null zurückgeliefert.
Auftrag void setAllVertexMarks(boolean pMark)
Der Auftrag setzt die Markierungen aller Knoten des Graphen auf
den Wert pMark.
Anfrage boolean allVerticesMarked()
Die Anfrage liefert true,
wenn die Markierungen aller Knoten des Graphen den Wert true haben, ansonsten false.
Auftrag void
setAllEdgeMarks(boolean pMark)
Der Auftrag setzt die Markierungen aller Kanten des Graphen auf
den Wert pMark.
Anfrage boolean allEdgesMarked()
Die Anfrage liefert true,
wenn die Markierungen aller Kanten des Graphen den Wert true haben, ansonsten false.
Anfrage boolean isEmpty()
Die Anfrage liefert true, wenn der Graph keine Knoten enthält, ansonsten false.