Hi Predrag: Below is information on how to run DJ at NU and on personal machines. DJ has been successfully used based on this info. -- Karl PART 3: ======= This part is about testing a Java programming tool that facilitates navigation through object structures and programming with visitors. The tool is called DJ http://www.ccs.neu.edu/research/demeter/DJ/ I used DJ on a simple example as described in: /course/com3362/sp99/DJ Test the following features of DJ: Test the traverse method using a statement of the form: cg.traverse(a, new StrategyGraph("A->B"), new MyVisitor()); Use only strategies of the form "A->B". (Find all B-objects contained in a A-object.) but use different visitors and different objects to be traversed. The class graph cg is constructed as follows: ClassGraph cg = new ClassGraph(); // constructed from *.java // will analyze your Java program Test the following features of visitors: before(A host) {}; // code executed before entering A-objects after(A host) {}; // code executed after leaving A-objects void start() {}; // executed before the traversal void finish() {}; // executed after the traversal Have before/after methods for both abstract and final classes. When a class has multiple super classes with before/after methods, in which order are the methods called? In your Java classes use the following features and make sure that the traversal is done right in all cases: abstract classes final classes Can you traverse through a Java array object? Can you traverse through a Java java.util.Vector object? In your Java objects use the following features and make sure that the traversal is done right in all cases: tree objects only (the Java object graph is a tree) cyclic objects (the Java object graph contains cycles; visitor has to stop infinite loop) use instances of classes that have subclasses.