package rpi.goldsd.graph; import rpi.goldsd.container.Hashable; /** * The DirectedEdge class is used to represent a directed edge. * * @see GraphBase * @see Edge * @version 2.0, 4/19/98 * @author David Goldschmidt */ public class DirectedEdge extends Edge { /* ****************** CONSTRUCTOR METHODS ****************** */ /** * Constructs a directed edge with the given start and end * vertices, the initial Hashable object to be associated * with this directed edge, and the initial weight. * @param startVertex the vertex from which this directed edge originates. * @param endVertex the vertex to which this directed edge leads. * @param data the Hashable object to be associated with this * directed edge. * @param weight the initial weight of this directed edge. */ public DirectedEdge( Vertex startVertex, Vertex endVertex, Hashable data, double weight ) { super( startVertex, endVertex, data, weight ); } /** * Constructs a directed edge with the given start and end * vertices, and the initial weight. * @param startVertex the vertex from which this directed edge originates. * @param endVertex the vertex to which this directed edge leads. * @param weight the initial weight of this directed edge. */ public DirectedEdge( Vertex startVertex, Vertex endVertex, double weight ) { super( startVertex, endVertex, weight ); } /** * Constructs a directed edge with the given start and end * vertices, and the initial Hashable object to be associated * with this directed edge. * @param startVertex the vertex from which this directed edge originates. * @param endVertex the vertex to which this directed edge leads. * @param data the Hashable object to be associated with this * directed edge. */ public DirectedEdge( Vertex startVertex, Vertex endVertex, Hashable data ) { super( startVertex, endVertex, data ); } /** * Constructs a directed edge with the given start and end vertices. * @param startVertex the vertex from which this directed edge originates. * @param endVertex the vertex to which this directed edge leads. */ public DirectedEdge( Vertex startVertex, Vertex endVertex ) { super( startVertex, endVertex ); } /** * The default constructor is not to be used, since a directed edge * must have a given start and end vertex. */ protected DirectedEdge() { } /* ****************** ACCESSOR METHODS ****************** */ /** * Returns the vertex at the head of this directed edge (the * vertex to which this directed edge leads). * @return the vertex to which this directed edge leads. */ public Vertex head() { return endVertex(); } /** * Returns the vertex at the tail of this directed edge (the * vertex from which this directed edge originates). * @return the vertex from which this directed edge originates. */ public Vertex tail() { return startVertex(); } /** * Traverses this directed edge from a given vertex, returning the * destination vertex. * @param V the vertex from which the traversal begins. * @return the vertex that this directed edge leads to; or null * if V is not the tail of this directed edge. */ public Vertex traverseFrom( Vertex V ) { return ( startVertex == V ? endVertex : null ); } }