60 lines
2.0 KiB
Plaintext
60 lines
2.0 KiB
Plaintext
#|
|
|
The Java Wizard helps programmers create
|
|
* classes
|
|
* datatypes via classes.
|
|
|
|
The class wizard requests class name, superclass, and field specifications.
|
|
From these, it generates a class, its constructor, and optionally a partial
|
|
template for methods, a toString method, and a diagram.
|
|
|
|
The union wizard requests a union name and specifications for the variants.
|
|
From these, it generates an abstract class (for the union name) and one
|
|
variant class that extends the abstract class per variant specification.
|
|
Again, it optionally adds templates, a toString method, and a diagram.
|
|
|
|
Both wizards generate their text in a language-sensitive manner. For
|
|
Beginner and Intermediate, they omit privacy specifications.
|
|
|
|
The wizards are added to the Special menu and insert text at the current
|
|
point.
|
|
|
|
At the moment they cannot read back code and help with natural program
|
|
edits and transformations.
|
|
|
|
The two major files are:
|
|
wizard.ss, which is the view and provides the user interaction
|
|
class.scm, which is the model and provides the functions for turning
|
|
a spec into a string that represents a class or a union.
|
|
|
|
Also, class.scm does not use the Java implementation to perform basic
|
|
checks on the information. It just leaves this to the programmer. So, for
|
|
example, if a programmer says a field has type "moo" and "moo" doesn't
|
|
exist as a class, then the wizard inserts a buggy class.
|
|
|#
|
|
|
|
BUGS:
|
|
|
|
* union:
|
|
|
|
** when a programmer changes the name of the Union after the variants have
|
|
been specified, the wizard fails to change the type name in the
|
|
variants.
|
|
|
|
* drawing:
|
|
|
|
** the Union wizard draws the method specs into the boxes for the
|
|
classes. The book "thinks" of them as inherited.
|
|
|
|
view
|
|
|
|
FEATURES:
|
|
|
|
** re-enable the method template creation in view
|
|
== the creation of method stubs depends on language level
|
|
|
|
** allow the introduction of an abstract class for common features in
|
|
Unions (common fields, common methods)
|
|
|
|
** specification of mutually recursive features
|
|
|