topical media & game development

talk show tell print

object-oriented programming

Software development projects

See also the OO at the VU homepage.
An object-oriented approach to software development requires an attitude that must be formed by experience with a practical programming task, employing object-oriented technology. In slide vu-prog, a number of projects are listed that have served as programming assignments at the Vrije Universiteit, Amsterdam.

Software development projects


slide: Software development projects

The programming language (mandatorily) employed was C++. The hush library 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 experiment with animation techniques.

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 {\em 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 employing 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.


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 {\em 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

(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.