In the conventionalobject model, encapsulatedobjects interact by messages that result in method invocations on the destination object. A message is delivered directly at the destination object. As a result of the direct deliveries, the message control code performing intermediate message manipulations cannot be abstracted out separately from the message processing code in the destination object without sacrificing the transparencyof the intermediate message control. We propose the filtered delivery model of message passing for object-oriented languages to provide the separation of message control from message processing in a transparentmanner. An interclass relationship, called a filter relationship, is introduced. As a consequence,a filter object can intercept and manipulate messages sent to another object called its client via filter member functions. A filter member function in a filter object can intercept a particular member function invocation on its client object. The filtered delivery model supports both upward and downward filtering mechanisms, facilitating interception of an upward message and its return message value. Filter objects can be plugged or unplugged at runtime. Binding of filter member functions to corresponding member functions in the client is selective and dynamic. The filtered delivery model is developed for the C++ object-oriented language; its applications are described and implementation is discussed. 1997 by John Wiley & Sons, Ltd.
[1]
D JanakiRam,et al.
A Multimedia Multicast Routing Algorithm
,
1996
.
[2]
Jean-Marc Nerson,et al.
Object-Oriented Analysis and Design
,
1992,
TOOLS.
[3]
Akinori Yonezawa,et al.
Abstracting Object Interactions Using Composition Filters
,
1993,
ECOOP Workshop.
[4]
Gregory R. Andrews,et al.
Paradigms for process interaction in distributed programs
,
1991,
CSUR.
[5]
Dharanipragada Janakiram,et al.
Shadow Objects: A Programming Model for Control Replication in Distributed Systems
,
1999
.
[6]
D. Janaki Ram,et al.
Constraint meta-object: a new object model for distributed collaborative designing
,
1997,
IEEE Trans. Syst. Man Cybern. Part A.
[7]
Laxmikant V. Kalé,et al.
CHARM++: a portable concurrent object oriented system based on C++
,
1993,
OOPSLA '93.
[8]
William E. Lorensen,et al.
Object-Oriented Modeling and Design
,
1991,
TOOLS.
[9]
Andrew S. Grimshaw,et al.
Easy-to-use object-oriented parallel processing with Mentat
,
1993,
Computer.
[10]
Vahid Mashayekhi,et al.
SuiteSound: A System for Distributed Collaborative Multimedia
,
1993,
IEEE Trans. Knowl. Data Eng..
[11]
Luca Cardelli,et al.
On understanding types, data abstraction, and polymorphism
,
1985,
CSUR.
[12]
Bjarne Stroustrup,et al.
C++ Programming Language
,
1986,
IEEE Softw..