| ### The Distributed Object Model DCE allows for a distributed object model in conjunction with the other DCE models to give a flexible way to distribute functionality and data for client/server applications. In addition, a distributed object model combines appropriate functionality with data, by way of distributed objects, in a way that also hides how parts of the distributed application communicates. Objects are used to model the behavior of all sorts of application entities. In object-oriented terminology, an object is simply an instance of a class. Each object contains member functions (methods) that are only specified in the class as operations. In the distributed object model, a DCE interface is a public set of operations, but the methods of implementation are separate and application specific. (Data types are usually application specific but the interface can specify them as well.) A DCE interface specifies what is known as an abstract base class because the class has a public interface and a hidden implementation. Object-oriented applications make it easy to hide data and implementation details by using hierarchies of classes and other object-oriented features. Thus object-oriented applications can help minimize the exposure of network details and the special DCE mechanisms of distributed computing. In DCE, the IDL compiler generates a class hierarchy for applications. This hierarchy contains an interface class derived from a DCE RPC base class. The interface class becomes part of an application in such a way that the network details, mechanisms of data transfer, and object location are hidden (encapsulated) in the base class. DCE interfaces have code generated in C++ to help implement a distributed object model. This means that developers can write object-oriented applications in a more natural way using C++ directly without relying on inadequate or cumbersome C-to-C++ wrapper routines for DCE interfaces. It has already been stated that the terms client and server are relative roles that an application plays, and not absolute conditions of any particular part of a distributed application. This is also true in the distributed object model. ##