AbstractThere is a long-standing schism in object-orientation between the safe but rigid statically typed languages, and the flexible but less safe dynamically typed languages. This paper presents an enhancement of the flexibility and expressive power of a statically typed language, based on an inheritance mechanism which allows both compile-time and run-time construction of classes, as well as dynamic specialization of objects. This enhanced flexibility supports better separation of concerns in large systems and allows for more elegant and maintainable designs. Submethoding---inheritance applied to behavioral descriptors---has been used for the construction of control structures for many years, in BETA. With dynamic inheritance, submethoding becomes more expressive, supporting control structures as first class values which may be constructed and combined dynamically. Even though the concept of submethoding is missing from most other languages, the basic idea could be applied to any statically typed object-oriented language.
Categories and Subject Descriptors: D.3.3 [Programming Languages]: Language Constructs and Features
Additional Key Words and Phrases: object orientation, dynamic inheritance, static analysis, first-class control structures, BETA, gbeta
Selected references
- Ole Agesen, Jens Palsberg, and Michael I. Schwartzbach. Type inference of SELF. In Oscar Nierstrasz, editor, ECOOP'93 -- Object-Oriented Programming, 7th European Conference, volume 707 of Lecture Notes in Computer Science, pages 247-267, Kaiserslautern, Germany, 26-30 July 1993. Springer.
- Gilad Bracha and William Cook. Mixin-based inheritance. In Norman Meyrowitz, editor, Conference on Object-Oriented Programming Systems, Languages, and Applications / European Conference on Object-Oriented Programming, pages 303-311, Ottawa, Canada, 21-25 October 1990. SIGPLAN Notices, 25(10), October 1990.
- Søren Brandt and Jørgen Lindskov Knudsen. Generalising the BETA type system. In Pierre Cointe, editor, ECOOP'96 -- Object-Oriented Programming, 10th European Conference, volume 1098 of Lecture Notes in Computer Science, pages 421-448, Linz, Austria, 8-12 July 1996. Springer.
- Craig Chambers. Object-oriented multi-methods in Cecil. In Ole Lehrmann Madsen, editor, ECOOP'92, European Conference on Object-Oriented Programming, volume 615 of Lecture Notes in Computer Science, pages 33-56, Utrecht, The Netherlands, 29 June-3 July 1992. Springer.
- Craig Chambers. Predicate classes. In Oscar Nierstrasz, editor, ECOOP'93 -- Object-Oriented Programming, 7th European Conference, volume 707 of Lecture Notes in Computer Science, pages 268-296, Kaiserslautern, Germany, 26-30 July 1993. Springer.
- R. Ducournau, M. Habib, M. Huchard, and M. L. Mugnier. Monotonic conflict resolution mechanisms for inheritance. In Andreas Paepcke, editor, Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'92), Seventh Annual Conference, pages 16-24, Vancouver, British Columbia, Canada, 18-22 October 1992. SIGPLAN Notices, 27(10), October 1992.
- R. Ducournau, M. Habib, M. Huchard, and M. L. Mugnier. Proposal for a monotonic multiple inheritance linearization. In OOPSLA'94, Ninth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications,, pages 164-175, Portland, Oregon, USA, 23-27 October 1994. SIGPLAN Notices, 29(10), October 1994.
- William Harrison and Harold Ossher. Subject-oriented programming (a critique of pure objects). In Andreas Paepcke, editor, Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), Eighth Annual Conference, pages 411-428, Washington, DC, USA, 26 September1-- October 1983. SIGPLAN Notices, 28(10), October 1993.
- Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen, and Kristen Nygaard. Classification of actions, or inheritance also for methods. In Jean Bézivin and Jean-Marie Hullot and Pierre Cointe and Henry Lieberman, editors, ECOOP'87 European Conference on Object-Oriented Programming, volume 276 of Lecture Notes in Computer Science, pages 98-107, Paris, France, 15-17 June 1987. Springer.
- Mira Mezini. Dynamic object evolution without name collisions. In Mehmet Aksit and Satoshi Matsuoka, editors, ECOOP'97 -- Object-Oriented Programming, 11th European Conference, volume 1241 of Lecture Notes in Computer Science, pages 190-219, Jyväskylä, Finland, 9-13 June 1997. Springer.
- Patrick Steyaert and Wolfgang De Meuter. A marriage of class- and object-based inheritance without unwanted children. In Walter G. Olthoff, editor, ECOOP'95 -- Object-Oriented Programming, 9th European Conference, volume 952 of Lecture Notes in Computer Science, pages 127-144, Åarhus, Denmark, 7-11 August 1995. Springer.
- Anand Tripathi, Eric Berge, and Mehmet Aksit. An implementation of the object-oriented concurrent programming language SINA. Software -- Practice and Experience, 19(3):235-256, March 1989.
- David Ungar and Randall B. Smith. Self: The power of simplicity. In Norman Meyrowitz, editor, Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'87), pages 227-242, Orlando, Florida, 4-8 October 1987. SIGPLAN Notices, 22(12), December 1987.