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.