CMSC 350 Project 4
The fourth programming project involves writing a program that behaves like the Java command
line compiler. Whenever we request that the Java compiler recompile a particular class, it not
only recompiles that class but every other class that depends upon it, directly or indirectly, and in
a particular order. To make the determination about which classes need recompilation, the Java
compiler maintains a directed graph of class dependencies. Any relationship in a UML class
diagram of a Java program such as inheritance relationships, composition relationships and
aggregations relationships indicate a class dependency.
The main class for this project should create the GUI shown below:
The GUI must be generated by code that you write. You may not use a drag-and-drop GUI
generator.
Pressing the Build Directed Graph button should cause the specified input file that contains the
class dependency information to be read in and the directed graph represented by those
dependencies to be built. The input file associated with the above example is shown below:
ClassA ClassC ClassE
ClassB ClassD ClassG
ClassE ClassB ClassF ClassH
ClassI ClassC
Each line of this file specifies classes that have other classes that depend upon them. The first
line, for example, indicates that ClassA has two classes that depend upon it, ClassC and
ClassE. In the context of recompilation, it means when ClassA is recompiled, ClassC and
ClassE must be recompiled as well. Using graph terminology, the first name on each line is the
name of a vertex and the remaining are its associated adjacency list. Classes that have no
dependent classes need not appear at the beginning of a separate line. Notice, for example, that
ClassC is not the first name on any line of the file.
Get Free Quote!
306 Experts Online