Bonjour, ce fil fait suite à un précédent fil intitulé Héritage, template, généralisation et particularisation. Comment s'organiser proprement ? et concerne peu ou prou la même thématique au travers d'un exemple (cf titre).

Dans ce premier post, je pose quelques définitions afin qu'on essaie de parler le même langage.

Un graphe (type Graph) est une collection de noeuds (type Node).
Un noeud est la composition d'une Valeur(type Val) et d'une collection de liens vers d'autres noeuds.
Un lien (type Link) pointe vers un noeud et peu comporter un drapeau (type Flag).

Un graphe doit pouvoir être parcouru :
- via les liens, en largeur (type BFiterator) , en profondeur (type DFiterator).
- transversalement (type Titerator).
- autrement...

J'aimerais organiser le choses de manière à ce que ce type Graph offre facilement la possibilité de faire a peu près tout ce qu'on peut imaginer faire sur un graphe.

N.B. : Je n'attends (surtout) pas que vous me donniez une réponse toute cuite, je cherche à élaborer une méthode. J'attends des critiques, des objections, et des conseils méthodiques.