Dynamic inheritance in a statically typed language

There 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.

[1]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[2]  Jens Palsberg,et al.  Type Inference of SELF , 1993, ECOOP.

[3]  Peter D. Mosses Action Semantics , 1986, ADT.

[4]  Marie-Laure Mugnier,et al.  Monotonic conflict resolution mechanisms for inheritance , 1992, OOPSLA 1992.

[5]  Marie-Laure Mugnier,et al.  Proposal for a Monotonic Multiple Inheritance Linearization , 1994, OOPSLA.

[6]  Theo D'Hondt,et al.  Agora: message passing as a foundation for exploring OO language concepts , 1994, SIGP.

[7]  Ole Lehrmann Madsen,et al.  Object-oriented programming in the BETA programming language , 1993 .

[8]  Søren Brandt,et al.  Dynamic Reflection for a Statically Typed Language , 1996 .

[9]  Harold Ossher,et al.  Subject-oriented programming: a critique of pure objects , 1993, OOPSLA '93.

[10]  Bent Bruun Kristensen,et al.  Classification of Actions, or Inheritance also for Methods , 1987, ECOOP.

[11]  Craig Chambers,et al.  Object-Oriented Multi-Methods in Cecil , 1992, ECOOP.

[12]  Anand R. Tripathi,et al.  An implementation of the object‐oriented concurrent programming language SINA , 1989, Softw. Pract. Exp..

[13]  William R. Cook,et al.  Mixin-based inheritance , 1990, OOPSLA/ECOOP '90.

[14]  Craig Chambers,et al.  Predicate Classes , 1993, ECOOP.

[15]  Jørgen Lindskov Knudsen,et al.  Generalising the BETA Type System , 1996, ECOOP.

[16]  William R. Cook,et al.  A Proposal for Making Eiffel Type-Safe , 1989, Comput. J..

[17]  David A. Moon,et al.  A monotonic superclass linearization for Dylan , 1996, OOPSLA '96.

[18]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

[19]  S. E. Keene,et al.  A programmer's guide to object-oriented programming in Common LISP , 1988 .

[20]  Andrew Shalit,et al.  The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language , 1996 .

[21]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[22]  Martín Abadi,et al.  A Theory of Objects , 1996, Monographs in Computer Science.

[23]  Mira Mezini,et al.  Dynamic Object Evolution without Name Collisions , 1997, ECOOP.

[24]  Patrick Steyaert,et al.  A Marriage of Class- and Object-Based inheritance Without Unwanted Children , 1995, ECOOP.