Feature-Oriented Programming with Object Algebras
Presented at the European Conference on Object-Oriented Programming, Montpellier
Object algebras are a new programming technique that enables a simple solution to basic extensibility and modularity issues in programming languages. While object algebras excel at deﬁning modular features, the composition mechanisms for object algebras (and features) are still cumbersome and limited in expressiveness. In this paper we leverage two well-studied type system features, intersection types and type-constructor polymorphism, to provide object algebras with expressive and practical composition mechanisms. Intersection types are used for deﬁning expressive run-time composition operators (combinators) that produce objects with multiple (feature) interfaces. Type-constructor polymorphism enables generic interfaces for the various object algebra combinators. Such generic interfaces can be used as a type-safe front end for a generic implementation of the combinators based on reﬂection. Additionally, we also provide a modular mechanism to allow diﬀerent forms of self-references in the presence of delegation-based combinators. The result is an expressive, type-safe, dynamic, delegation-based composition technique for object algebras, implemented in Scala, which eﬀectively enables a form of Feature-Oriented Programming using object algebras.
|feature-oriented programming, object algebras, extensibility|
|PROGRAMMING TECHNIQUES (acm D.1), Tools (acm D.2.1.3), Language Constructs and Features (acm D.3.3)|
|Software (theme 1)|
|European Conference on Object-Oriented Programming|
|Organisation||Software Analysis and Transformation|
Oliveira, B.C.d.S, van der Storm, T, Loh, A, & Cook, W.R. (2013). Feature-Oriented Programming with Object Algebras.