|
WebShell
Object-Oriented Analysis
version
1.0
Tuesday, February 16, 1999
Analyzing the
functionality desired in the WebShell project, we came up with the
following classes, each encapsulating independent amounts of
information:
the GUI class that hides
all the details related to maintaining a tree and a list view
the Console class that hides all the details related to
parsing, interpreting and displaying commands and their output
the HTTPfs (HTTP File System) class that will make the web
pages look like directories on the local file system
The
main program (which is in the Sloth class) will create the GUI
and the Console windows. Applying the Model-View-Controller
pattern, we came up with another class, the Control class,
that will coordinate the actions and data exchanges between the GUI
and the Console, on one hand, and the HTTPfs, on the
other hand.
To
make the Control class more general, we imposed a generic
interface on the GUI and on the Console, the View
interface, that unifies and provides the minimum of functionality and
of type information.
Since
the requirements changed to include browsing of the local file
system, we similarly unified the HTTPfs and the Localfs
under one interface, the FileSystem interface. This FileSystem
interface provides functionality to query about the files and the
file types existing in the current directory.
Because
we were unsatisfied with the performance and the inconsistent
functionality of the Java library class java.net.URL, we
created our own URL handling class, called GenericURL, which
is completely RFC-compliant. The GenericURL class is used by
the Control and the Views to transfer and display file
system information.
The
FileInfo class acts as a data encapsulation unit, without any
data hiding, its mission being that of allowing for the easy transfer
and query of information from the FileSystem to the Views
and the Control.
The
Open class handles the open request of the WebShell, hiding
the ugliness of system-dependent program invocation from the Control.
The
GUI and the Console, as well as the HTTPfs, use
helper classes to perform their required functionality. That is how
the TablePanel, TreePanel, Command, MRV,and the HTMLParser were created.
|