Object oriented models appear in many aspects of computer science: system design, programming, etc. The essence of an object oriented approach is that concepts, ideas, processes, or data, or combinations of these, are grouped together into a capsule called an object. An object supports a number of interfaces with which it communicates with other objects. In a programming analogy, an interface is like the declaration of a procedure or function. Thus an interface can be supported bt one or more actual implementations or definitions. In an object oriented model the implementations behind interfaces are called methods or operations.
Objects provide us with a effective way of encapsulating things so that we can use them in other parts of the model. The interface describes exactly how to use the object. In a true object model everything is an object; however, going too far down this road enables us to describe anything recursively and thus we end up explaining nothing. We will use the object concept to build up a model of a distributed system, the model will then show us what types of object interaction we will need to support.
The re-usability of objects, and refinement through inheritance, makes systems more open, since they can support diversity, but permit comprehension of diverse systems into one.
The first part of this book describes mechanisms needed to build up a distributed system. Just because we are using an object oriented approach, to make our descriptions consistent and related, it does not mean that we must build an object oriented distributed system. The reader must distinguish between a tool used to put across ideas and a tool used to design and build a system. It is possible to use object oriented languages and object oriented support systems to build a distributed system. It is just as possible to program and use a distributed system in assembler code if required.