Dynamic graphics techniques are now considered essential for making computers easier to use, and an interactive and graphical interfaces that allow the presentation and the direct manipulation of information in a pictorial form is now an important part of most of modern graphics software tools. The range of applications that benefit from this techniques is wide: from two-dimensional user interfaces popularized by desktop computers like Apple's Macintosh or the NeXT machine, to CAD and animation systems that allow the creation, manipulation and animation of complex three-dimensional models for purposes of scientific visualization or commercial animation. Future possibilities include the latest virtual environment research that permits an even more intuitive way of working with computers by including the user in a synthetic environment and letting him interact with autonomous entities, thanks to the use of the latest high-speed workstations and devices. Unfortunately, the creation and the implementation of such dynamic applications are a complex task: these systems have to manage an operational model of the real or virtual world, and simulate the evolution of this model in response to events that can occur in an order which is not predefined. They must handle multi-threaded dialogues with the user that are essential for direct manipulation interfaces, and make extensive use of many asynchronous input devices, ranging from the common keyboard and mouse to sophisticated 3D devices like Spaceball, Polhemus or DataGlove.
It was soon recognized that the classic approach of functional decomposition was not well suited for building these kinds of applications and that object-oriented techniques are more appropriate for this domain (Kay, 1977). In the following sections we will explain the reasons that lead to this point of view, and present an overview of some of the important object-oriented design principles, issues and techniques that are involved in the construction of dynamic graphics systems.