A Manipulator is responsible for a simple and particular task such as redigitization of the velocity curve in the program Overlay, construction of a box where the spectrum may be computed in the program Zplane. The separation in simple objects responsible for a task from the beginning to the end of the user manipulation helps to identify duplicate work and then avoids duplication. Furthermore it simplifies the implementation by suppressing all states variable and encourages reusability. For example, I have inserted in appendix a table presenting some Overlay's object operations (Table 9). An overview of the code to manipulate an overlay object is given in Figure .
We should recall from the introduction that an object is only defined by its methods or operations. Each view displaying data has been derived from the View class described in an earlier section. By using the inheritance mechanism, modification of tpow, of the clip value, or of the display mode are immediate functionalities. A View for the program Zplane will have extra functionalities such as computing the spectrum on a portion of its data. A View displaying Nmo Data will know how to recompute and redisplay its data when the velocity curve change.
The Seplib objects give a nice interface for saving filtered data in the Zplane program or velocity curves in the Overlay program. The GSObjects provide hardcopy operations. Then nothing has to be (re)done to create a Vplot hardcopy function for these programs. GSObject 1D editing operations give an immediate implementation of a ``velocity curve reshape'' functionality. The utilization of SepView helps to construct the interface and provides facilities such as file browser, documentation, help on line. As an illustration of the possibilities provided by such environment, some X-Window dumps and Vplot hardcopies of Overlay and Zplane user sessions are presented here. (Figures , , , , and ).