Modules and Class Refinement: A Meta-modeling Approach to Object-Oriented Programming (original) (raw)

With object-oriented programming, classes and inheritance have sometimes been considered as a definitive answer to the need for modularity and reusability in programming languages. However, this view of object-oriented languages is often considered as too limited and many authors have claimed that classes do not make appropriate modules. On the one hand, separate concerns are generally distributed on a set of closely related classes, while on the other, a class implements several unrelated concerns. The so-called expression problem stresses this limitation of the traditional view on object-oriented programming, which makes it easy to add new classes but quite impossible to add concerns to previously defined classes. Accordingly, recent research has yielded a lot of proposals addressing these commonly agreed needs. These proposals are based on various notions, e.g. virtual classes, higher-order hierarchies, nested inheritance, mixin layers or classboxes. All of these proposals are ve...