Abstract

Object-oriented software development increases the reusability, extensibility and maintainability of software. The object-oriented paradigm has, however, a num ber of deficiencies that influence the reusability, extensibility and maintainability for certain applications.
The TRESE project at the University of Twente, the Netherlands developed the Composition Filters Object Model which is capable of solving a number of the deficiencies. The CFOM is a modular extension of the object model. Messages sent to an object are fitered by the filters of the object. The filters can manipulate the message before passing it to the object. We defined a Composition Filter language to express the filters of an object.

This thesis describes the extension of the C++ programming language with the concepts of composition filters. We have chosen to extend the C++ language, because at this moment it is the most used object-oriented programming language in the industry. The C++ language is not affected by the extension, so applications can be compiled with a C++ compiler. We call the resulting programming language the C++/CF programming language.
A number of extensions already have been defined for the C++ language. Each extension adds a specific behavior - for example real-time or concurrent behavior - to the C++ language. The difference between these extensions and the C++/CF extension is: CFs provides the possibility to compose software at meta-level. Because of the orthogonality of filters and the different behavior of filters, filters can be composed to implement more than one behavior. Extending the C++ programming language with the concepts of composition filters makes C++ more expressive, which enables a C++ programmer to develop more powerful software. CFs separate the code describing the behavior of an object and code describing the concerns between objects. The cause of a number of deficiencies of the object-oriented paradigm is the mixing of these two.

The usage and the implementation of the CF extension is discussed in this thesis. To integrate the CF extension with C++, we defined a number of macros. One aspect of the integration is the reification of messages. This thesis describes a model to filter and manipulate a reified message.
A C++/CF application is compiled with a C++ compiler. The CF part of an object is translated to C++ constructs by a C++/CF preprocessor. It is also possible to debug an application by compiling it with debug options.