More Abstractions: Vertex and Edge

  • Describe the relationship between the Position abstraction and Vertex and Edge.

We define abstractions for Vertex and Edge.

/**
 * Edge position for graph.
 * @param <E> Element type.
 */
public interface Edge<E> extends Position<E> {
}
/**
 * Vertex position for graph.
 * @param <V> Element type.
 */
public interface Vertex<V> extends Position<V> {
}

In these simple abstractions, a Vertex and an Edge are just Positions.

/**
 * Generic position interface.
 * @param <T> the element type.
 */
public interface Position<T> {

  /**
   * Read element from this position.
   * @return element at this position.
   */
  T get();
}

The Graph interface uses Vertex and Edge abstractions similar to how the List interface used Position.