FeatureC++: Feature-Oriented and Aspect-Oriented Programming in C++
Sven Apel, Thomas Leich, Marko Rosenmüller, Gunter Saake · 2005
Abstract. This paper presents FeatureC++, a novel programming language which supports Feature-Oriented Programming (FOP) for C++. Besides well-known concepts of FOP languages, FeatureC++ supports several novel FOP language features, in particular multiple inheritance and templates for Generic Programming. Furthermore, FeatureC++ solves, as some other FOP languages, the extensibility problem, the constructor problem, and the problem of hidden overloaded methods. A first contribution of this article is to introduce and discuss the language concepts of FeatureC++. A second contribution is the analysis of current drawbacks of FOP languages. Specifically, we outline four key problems and present three approaches to solve them: Wildcard-Based Mixins, Aspectual Mixin Layers, and Aspectual Mixins that adopt concepts of Aspect-Oriented Programming (AOP) in different ways. These approaches are not exclusive to FeatureC++ and can be easily applied to other FOP languages. Furthermore, we introduce our implemented prototype that already supports most of the presented FeatureC++ language concepts, including Aspectual Mixin Layers. Finally, we present a case study to clarify the benefits of FeatureC++ and its AOP extensions. 1