\c{
An object-oriented approach to software
development requires an attitute that must
be formed by experience with a practical programming
task, employing object-oriented technolgy.
In slide [vu-prog], a number of projects are listed
that have served as programming assignments
at the Vrije Universiteit, Amsterdam.
}
\slide{vu-prog}{Programming projects}{
Programming projects
- gambling machine
- interactive video game \zline{(Coplien, 1992)}
- simple hypermedia system \zline{(Meyrowitz, 1986)}
- direct manipulation score editor \zline{Pope, 1991)}
- an object-oriented expert system \zline{(Hu, 1989)}
- 3D animation editor \zline{(Ammeraal, 1992)}
- a simple case tool \zline{(Coad and Yourdon, 1991b)}
- route planner
}
\c{
The programming language (mandatorily) employed
was C++.
The hush library, sketched in section [hush],
was used for developing graphical user interfaces.
Students were allowed to work in groups of two.
Before starting a project, students were required
to write a synopsis giving a global outline
of the intended functionality of their system.
The minimal design documentation required
was a description of each class interface
in the style of CRC cards.
Students were encouraged to make documentation and help
available online, preferably in a hypertext format.
The programming projects are based on suggestions
found in the literature, with the exception of
the gambling machine and the routeplanner.
The gambling machine seemed nice to allow students
to animate with animation techniques.
}
\c{
The projects
A typical example of a gambling machine
is a one armed bandit with three columns of fruit.
It is important to offer a realistic interface.
Further, one must employ stochastic techniques
to determine the chance of winning.
An example of an interactive video game
is a volley or tennis game for one or two players.
One must allow for an option to determine the speed
of the ball and an option for replay.
See [Coplien92].
A simple hypermedia system must be capable of
presenting text and graphics and must allow for
the traversal of links between such items.
An important aspect of this project is
the development of an adequate object model
for the items supported, including links.
See [Meyro86] and [Conklin87].
A direct manipulation score editor
allows for editing musical fragments interactively.
Some musical knowledge is required for such a project.
The layout of music notation appears to be a difficult
issue, because it is essentially two-dimensional
and involves many special symbols.
See [Pope91].
The notion of an object-oriented expert system
is quite open-ended.
An approach one may take is to implement
a traditional rule-based expert system
in an object-oriented way, using C++.
Take care to include an example knowledge-base
to test the functionality of the system.
See [Hu89].
A more general approach to employimg
object-oriented technology for the development
of knowledge-based systems is described in Eli\"ens (1992).
A 3D animation editor
supports the creation of (simple) 3D figures
and must minimally allow for some basic manipulations in 3D
space, such as rotations and translations.
As an additional requirement, there must be a facility
to replay a series of manipulations.
See [Ammeraal].
A simple case tool
allows for the interactive development of
a simple object model,
including the description of attributes of objects
and the inheritance relations between object types.
For an example of such tools, see [CY91b] and [Rum91].
A routeplanner allows the user to indicate
a starting location and an end location.
The system then calculates an appropriate route,
for example the fastest or cheapest.
As an additional requirement, the system must
allow for the user to ask additional
information about the route and the intermediate
locations situated along the selected route.
This information should preferably be in multimedia format.
}
\c{
Comments
The routeplanner has successfully been used
as an assignment as part of a CS2 Software Engineering
course.
Students, indeed, took the opportunity to experiment
with the multimedia facilities of hush.
Some of the other project assignments, such as the
score editor and the 3D editor, have led to
quite remarkable results.
For example, the 3D editor project led students
to develop a system to wander in 3D virtual space.
Somewhat disappointingly, however,
the object-oriented expert system
project has not
been chosen thus far.
Perhaps it is regarded as too difficult or as not interesting enough.
Since the assignments were meant primarily as a means to
gain experience with practical aspects of object-oriented
programming,
students were left free to choose a particular design method.
The use of CRC-style documentation, however, was mandatory.
Quite often, students developed a design employing OMT
notation, which did not necessarily lead to a better result.
To gain experience with object-oriented
design and analysis, a practical course
focusing on modeling and requirements analysis
is advisable.
Any of the assignments above may be used in such
a course.
Other suggestions may be found in [Fusion]
and [Sanden94] (which may be obtained by anonymous ftp at
{\tt isse.gmu.edu:/pub/techrep}).
}