Questions & AnswersJava Programming

CMSC 350 Project 4 The fourth programming project involves writing...

Question
Answered step-by-step
Asked by sabadane on coursehero.com

CMSC 350 Project 4 The fourth programming project involves writing...

CMSC 350 Project 4 The fourth programming project involves writing a program that accepts information contained in a file about the class dependencies in a Java program and creates a directed graph from that information. From the directed graph, it produces two different kinds of displays of those dependency relationships. A sample input file is shown below: ClassA ClassC ClassE ClassJ ClassB ClassD ClassG ClassC ClassA ClassE ClassB ClassF ClassH ClassJ ClassB ClassI ClassC The first name of each line of the file is a Java class upon which other classes depend. The remaining names are the classes that depend upon the first class on that line. The first line of the above file, for example, indicates that ClassA has three classes that depend upon it, ClassC, ClassE and ClassJ. A class that have does any classes that depend on it, need not appear at the head of any line. The main method in the class for this project should allow user select the input file from the default directory by using the JFileChooser class. It should then add the edges to a directed graph that defines these class dependencies. A second class, DirectedGraph, should be a generic class, whose generic parameter specifies the type of the labels that are associated with the vertices of the graph. It should contain a method that allows edges to be added to the graph, which is how the main method will initially build the graph. It should also contain a method that performs a depth-first search of that graph. The pseudocode for that search is show below: depth_first_search(vertex s) if s is discovered perform cycle detected action return perform add vertex action mark s as discovered perform descend action for all adjacent vertices v depth_first_search(v) perform ascend action mark s as finished When the method in the DirectedGraph class that initiates the depth first search is called, it should first initialize all the vertices to the undiscovered state and begin the search at the vertex that corresponds to the first name in the input file. Another method in the DirectedGraph class should then allow the main method to display any unreachable classes by examining all the vertices of the graph to see which remain undiscovered. This project should contain a generic interface named DFSActions, whose generic parameter again specifies the type of the labels that are associated with the vertices of the graph. It should contain four method signatures that correspond to the four actions performed in the depth first search: cycle detected, process vertex, descend and ascend. There should be two additional classes that both implement the aforementioned interface. The first, Hierarchy, should produce a hierarchical representation of the class dependencies. Circular dependencies should be flagged. For the above input file, the following hierarchical representation should be produced: ClassA ClassC * ClassE ClassB ClassD ClassG ClassF ClassH ClassJ ClassB ClassD ClassG The asterisk after ClassC results from the fact that ClassC depends upon ClassA and ClassA depends upon ClassC. The Hierarchy class should override the toString method, which should return a string that contains the above, after having performed the depth-first search. The other class that implements the DFSActions interface should be ParenthesizedList. It should produce an alternate representation that is also returned by its toString method. For the above input file, the following hierarchical representation should be produced: ( ClassA ( ClassC * ClassE ( ClassB ( ClassD ClassG ) ClassF ClassH ) ClassJ ( ClassB ( ClassD ClassG )))) The main method should produce both representations. In addition it should display the unreachable classes by calling the previously mentioned method. For the above input file, the following unreachable class should be identified: ClassI is unreachable Code duplication should be avoided. In particular, the depth first code should not be duplicate

Answer & Explanation

Solved by verified expert
Answered by satyaraja1997 on coursehero.com

sectetur

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequat, ultrices ac magna. Fusce dui lectus, congue vel laoreet ac, dictum vitae odio.

sectetur adipis

CliffsNotes Logo

Unlock access to this and over
10,000 step-by-step explanations

Unlock Explanation

Have an account? Log In

<p style="margin-left:0px;">sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie consequ</p>sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus ante, dapibus a molestie con

Step-by-step explanation

sectetur adipiscing elit.

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus ef

sectetur adipiscing elit. Nam lacinia pul

  • sectetur a
  • sectetur adipi
  • sectetur
  • sectetur ad
  • sectetur adipis
  • sectetur adipiscin
  • sectetur adipiscing el

sectetur ad

sectetur adipiscing

sectetur adipiscing eli
sectetur adipiscing elit. Nam lacin
sectetur adipiscing elit. Nam lacin

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis
sectetur adipiscing elit. Nam lacinia pulvinar t

sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis
sectetur adipiscing elit. Nam lacinia p

sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec fa
sectetur adipiscing elit. Nam lacinia pulvinar torto

sectetur adipiscing elit. Nam lacinia pulvinar to
sectetur adipiscing

sectetur
sectetur adipiscing elit. Nam lacinia pulv

sectetur adipiscing elit. Nam lacinia
sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pelle
sectetur adipisc

sectetur adipiscing elit. Nam lacinia pulv
sectetur adipiscing elit.
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilis
sectetur adipiscing elit. Nam
sectetu

sectetur adipiscing elit. Nam la
sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pe
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis
sectetur adipisc

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur
sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipiscing elit. Nam lacinia pulvin
sectetur adipiscing elit. Nam l

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilis
sectetur adipiscing elit. Nam lacinia pulvin
sectetur adipiscing elit. Nam lacinia pulvinar torto
sectetur adipiscing elit.
sectetur adip

sectetur adipiscing elit. Nam lacinia pulvinar tortor n
sectetur adipiscing elit. Nam lacinia pulvinar tort
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f
sectetur adipiscing elit. Nam lacinia pulvinar tort
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f

sectetur adipiscing elit. Nam lacinia pulvinar to
sectetur adipiscing elit. Nam lac

sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit. Nam

sectetur adipiscing elit. Nam lacinia pul
sectetur adipiscing elit. Nam lacinia pulvinar tortor ne
sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam laci
sectetur adipiscing elit. Nam l
sectetur adip


sectetur adipiscing elit. Nam lacinia pulvinar tortor nec
sectetur adipiscing elit. Nam lacinia pulvinar tor
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec
        
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus
sectetur adipiscing elit. Nam lacini

sectetu


sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facili
sectetur adipiscing elit. Nam lacin
sectetu

sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f
sectetur adipisc


sectetur adipiscing elit. Nam lacinia pulvinar

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesq
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus e
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus effici

sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec faci
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dap
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec
sectetur adipiscing elit.

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec fa
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque d
sectetur adipiscing elit. Nam lacinia pulvinar tortor ne
sectetur adipiscing elit. Nam l
sectetur adipiscing elit.
sectetur adipiscing
sectetur adip

sectetu


s
 

sectetur adipis

sectetur adipiscing elit. Na
sectetur adipiscing eli

sectetur adipiscing elit. Nam lacinia pulvinar tortor

sectetur adipiscing elit. Nam lacinia pulvina

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia p
sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit.
sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipiscing elit.

sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacin
sectetur adipiscing elit.
sectetu

sectetur adipis
sectetur adipiscing elit. Nam la

sectetur adipiscing elit. Na

sectetur adipiscing eli

sectetur adipiscing elit. Nam lacini
sectetur adipiscing elit. Nam lacinia pu
sectetur adipiscing elit. Nam l

sectetur adipiscing elit. Nam lac
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit. Nam lacinia pulvinar tortor n
sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit.
sectetur adipiscing

sectetur adipiscing elit. Na
sectetur adipiscing elit. Nam
sectetur adipiscing elit. Nam lac
sectetur adipiscing elit. Nam

sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit. Nam lac

sectetur adipiscing elit. Na
sectetur adipiscing elit. Nam lacini

sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacini
sectetur adipiscing


sectetur adipiscing elit. Nam laci

sectetur adip
sectetur adipiscing elit


sectetur adipiscing elit. Nam lacinia pulvina
se
sectetur adipiscing elit.
sectetur adipiscing elit. Nam lacini
sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam lacin
sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam lacin
sectetur adipiscing e
sectetur adipiscing elit. Nam laci
sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipis

sectetur adipiscing eli


sectetur adipiscing elit. Nam lacinia pul
sectetur adipiscing elit. Nam laci
sectetur adipiscing elit. Nam
sectetu

sectetur adipiscing elit. Nam lacinia pul
sectetur adipiscing elit. Nam lacinia pu
sectetu
s
 

sectetur a

sectetur adipiscing e
sectetur adipiscing
sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit.

sectetur adipiscing

sectetur adipiscing elit. Nam lacinia pulvinar tortor n


sectetur adipiscing elit. Nam l

sectetur adipis
sectetur adipiscing e
sectetur adipiscing elit. Nam lacinia pulvinar to
sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec faci
sectetur adipisc


sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisi
sectetur adipiscing elit. Nam lacinia pulvinar tortor

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. P
sectetur adipiscing elit. Nam lacinia pulvinar tortor ne
sectetur adipiscing eli
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus effici
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentes

sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis.

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisi
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec fac
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellent
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisi
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus effi
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis.
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis.
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque d
sectetur adipiscing elit. Nam l

sectetur adipiscing elit.
sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipiscing elit. Nam lacinia pulvin
sectetur adipiscing
sectetur adip


sectetu


sectetur adipiscing elit. Nam lacinia pulvinar

sectetur adipiscing elit. Nam lacinia
sectetur adipiscing elit. Nam lacin

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. P
sectetur adipiscing elit. Nam lacinia


sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pe
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec faci
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapib
sectetur adipiscing elit. Nam lacinia pulvinar


sectetu
s
 

sectetur adi

sectetur adipiscing e
sectetur adipiscing elit.
sectetur adipis

sectetur adipiscing elit. Nam laci
sectetur adipiscing elit. Nam
sectetu

sectetur adipis
sectetur adipiscing elit. Nam la
sectetur adipiscin
sectetur adipiscing elit. Nam
sectetu
s
 

sectetur adipisc

sectetur adipiscing elit. Nam la
sectetur adipiscing elit. Nam lacinia pulv

sectetur adipiscing elit. Nam lacinia pulv

sectetur adipiscing elit. Nam lacinia pul

sectetur adipiscing elit. Nam laci
s
 

sectetur adipiscing

sectetur adipiscing elit. N
sectetur adipiscing e

sectetur adipiscing elit. Nam lacinia pulvinar tor
sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis.
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec f
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facil
sectetur adipisc

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pe
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis.


sectetur adipiscing elit. Nam lacinia pulvinar tort
sectetur adipiscing elit. Nam lacinia pulvinar torto
sectetur adipiscing elit. Nam l
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adip

sectetur adipiscing elit. Nam lacinia pulvinar tor
sectetur adipiscing elit. Nam lacin

sectetur adipiscing elit. Nam lacinia pu
sectetur adipiscing elit. Nam lacinia pulvinar tor

sectetu

sectetur adipiscing elit. Nam lacinia pul
sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque
sectetur adipiscing elit. Nam lacinia pulvinar tor
sectetur adipiscing elit. Nam lacinia pulvinar tortor nec fa
sectetur adipisc

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facili
sectetur adipiscing elit. Nam lacinia pulvin
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia pulvinar to
sectetur adip

sectetur adipiscing elit. Nam lacin
sectetu

s
 

sectetur adipiscing eli

sectetur adipiscing elit. Na
sectetur adipiscing eli

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec faci

sectetur adipiscing elit. Nam lacinia pulvinar tortor nec facilisis. Pellentesque dapibus efficitur laoreet. Nam risus

sectetur adipiscing elit. Nam lacinia pulvinar torto

sectetur adipiscing elit. Nam lacinia pulvina

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia p
sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit.
sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacinia pulvinar
sectetur adipiscing elit.
sectetu

sectetur adipis
sectetur adipiscing elit. Nam lacin
sectetur adipiscing elit.
sectetu

sectetur adipis
sectetur adipiscing elit. Nam la

sectetur adipiscing elit. Na
sectetur adipiscing elit
sectetur adipiscing elit. Nam lacini
sectetur adipiscing elit. Nam lacinia pu
sectetur adipiscing elit. Nam l

sectetur adipiscing elit. Nam lac
sectetur adipiscing elit. Nam lacinia pulvinar t
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit. Nam lacinia pulvinar tortor n
sectetur adipiscing elit. Nam lacinia pulvinar tortor
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia pulvi
sectetur adipiscing elit. Nam lacinia p
sectetur adipiscing elit.

sectetur adipiscing
sectetur adipiscing elit. Nam lac

sectetur adip

sectetur adipiscing elit.

sectetur adipiscing eli


sectetu
s
 

sectetur adipiscing elit.

 

38491069

 

 

sectetur adipiscing

sectetur adipiscing

sectetur adipiscing eli

1 attachment
Subscribe to unlock attachment
JPG

Get unstuck with a CliffsNotes subscription

Example CliffsNotes Question and Answer
Unlock every step-by-step explanation, download literature note PDFs, plus more.Get Access

Related Q&A