In the conventional object model, encapsulated objects interact by mes
sages that result in method invocations on the destination object. A m
essage is delivered directly at the destination object. As a result of
the direct deliveries, the message control code performing intermedia
te message manipulations cannot be abstracted out separately from the
message processing code in the destination object without sacrificing
the transparency of the intermediate message control. We propose the f
iltered delivery model of message passing for object-oriented language
s to provide the separation of message control from message processing
in a transparent manner. An interclass relationship, called a filter
relationship, is introduced. As a consequence, a filter object can int
ercept and manipulate messages sent to another object called its clien
t,ia filter member functions. A filter member function in a filter obj
ect can intercept a particular member function invocation on its clien
t object. The filtered delivery model supports both upward and downwar
d filtering mechanisms, facilitating interception of an upward message
and its return message value. Filter objects can be plugged or unplug
ged at runtime. Binding of filter member functions to corresponding me
mber functions in the client is selective and dynamic. The filtered de
livery model is developed for the C++ object-oriented language; its ap
plications are described and implementation is discussed. (C) 1997 by
John Wiley & Sons, Ltd.