A fundamental benefit of an object-oriented approach from the viewpoint of the end user is the ability for an application to behave in a manner that parallels a typical human being's natural approach to problem solving. The flexibility of the object-action interface allows scope for individual variation in the approach to a particular work task. However, such a user interface relies upon an object-oriented application implementation in order to allow such flexibility. Such an implementation is in turn dependent upon the correct design approach, which must begin with a focus upon the entities that affect the application, rather than upon the procedures to be performed upon those entities.
The object-oriented paradigm also encourages the concept of data abstraction and encapsulation, whereby the definition of and establishment of access to data objects is achieved from within the application object. Ideally, all access to and manipulation of a data object is carried out from within a single application object, thereby facilitating change management and application maintenance.
Another great benefit of the object-oriented approach is the increased potential for creation of reusable code. The independent nature of application objects enables them to be coupled together in various ways to achieve desired results, with the internal implementation details of each object and its data structures being isolated from the other objects with which it communicates. Applications that manipulate existing data objects may therefore be assembled from a number of existing application objects, thus reducing the time and effort required to develop the application.
This potential for object reuse has also given rise to one of the great criticisms levelled at the object-oriented approach; the "myth" of the completely generic object. Due to the impracticability of foreseeing all possible actions that might be performed on a data object, it is impossible to produce a complete set of methods for that object. Hence an application object might require modification at some stage in its life cycle, and is not truly reusable.
The object-oriented approach overcomes this potential problem by the use of a concept known as subclassing, whereby a new application object is created comprised of a data object and a number of new or modified methods which act upon that object. Messages destined for the original application object are diverted to the new object; the original object is said to have been subclassed. If the message is of a type with which the new object is explicitly concerned, it processes the message using its own methods. If not, it passes the message on to the original object for processing. In the subclassing process, neither the sending object nor the original receiving object should be aware that subclassing has taken place. Subclassing therefore provides a transparent means for modifying or adding to the behaviour of an existing application object without modifying the object itself.
The general principles of object-oriented design and programming, as they apply to the Presentation Manager environment, are explored more fully in Object-Oriented Applications.