Generalization is common in object-oriented modeling. It would be useful in many situations also as a language mechanism, reverse inheritance, but there have been only few detailed proposals for that. This paper defines reverse inheritance as a true inverse of ordinary inheritance, without changing anything else in the language that is extended. Eiffel is perhaps the most suitable language for that purpose because of its flexible inheritance principles. Moreover, there exists good previous work on Eiffel, on which we have built. We describe the most important aspects of our extension, whose details proved to be more difficult than we had assumed. It would be easier if some modifications were made to Eiffel's ordinary inheritance, or if one designed a new language. We also briefly mention our proof-of-concept implementation in which reverse inheritance is changed to ordinary inheritance by automatic transformations, and thus no compiler modifications are needed.
['Markku Sakkinen', 'Philippe Lahire', 'Ciprian-Bogdan Chirilă']
Towards fully-fledged reverse inheritance in eiffel