## C.1 What is ``Object-Oriented''?

XPCE is an object-oriented system. This implies that the basic entity in XPCE's world is an object, an entity with state capable of performing actions. Such an action is activated by sending the object a message.

So far, most object oriented systems agree. Starting from these notions however one can find object oriented environments that take widely different approaches for representing objects, actions on objects and sending messages.

Rather than specifying operations on each individual object most OO environments define some way of sharing the operation definitions (called methods). There are two ways to share methods. One is to create objects as a copy of other objects and then modify them (by attaching and deleting slots and methods) to fit the particular need. If a series of similar objects is needed, one first creates an object that satisfies the common functionality and then creates multiple copies of this object. This approach is followed by SELF Chambers et al., 1989. The other ---more traditional--- approach is to define a class. A class is an entity in the object oriented environment that defines the constituents of the persistent state and the methods for each of its instantiations.

XPCE takes the latter approach, but adds some notions of the object-copying approach because GUI's often contain unique objects and because object modification is more dynamic and therefore more suitable for rapid prototyping.