Traversal Semantics in Object Graphs
Mitchell Wand, Karl J. Lieberherr · 2001
Traversal through object graphs is needed for many programming tasks. We show how this task may be specified declaratively at a high level of abstraction, and we give a simple and intuitive semantics for such specifications. The semantics, while intuitive, requires existential quantification over all object graphs to represent the fact that during traversal we have only local knowledge of the graph. Since we cannot search explicitly over all object graphs, we reduce the infinite quantification to a graph problem over the class graph. The algorithm is implemented in a Java library called DJ. The system is aspect-oriented in that it makes a clear separation between traversal and behavior, and it is adaptive in that it relies on reflection to fill in the details of the traversal algorithm at run-time.