title: Inheritance tree: should undirected graph be subclass of directed graph?
body: <p>I am implementing a simple graph library for practice.
  I have created a base class Graph , from which I have derived DirectedGraph.
  I was wondering if I should derive UnDirectedGraph class from DirectedGraph or should I derive it from Graph class itself. UnDirected graph is a DirectedGraph in which a edge from u to v implies edge from v to u. Please let me know what is the best way to implement Graph Hierarchy.</p>
  
  <p>Also , Graph class has a list of GraphVertex. Should the GraphVertex Class hold the data for edges going from that vertex or should the graph class hold all the data for all the edges.</p>