Abstract:
Inheritance is often portrayed as a fundamental ingredient of object-oriented programming, one which is essential to building extensible software systems. However, inheritance is also a controversial mechanism with many competing and often contradictory interpretations, whose use can even impede extensibility in certain scenarios. Decomposing inheritance into the more basic mechanisms of object composition and message forwarding solves many of these problems. The resulting programming model is simpler yet more flexible than one based on inheritance, and illustrates that inclusion polymorphism is actually the more fundamental ingredient.
Citations
|
3853
|
Design Patterns: Elements of Reusable Object-Oriented Software
– Gamma, Helm, et al.
- 1995
|
|
1137
|
Smalltalk-80: The Language and Its Implementation
– Goldberg, Robson
|
|
951
|
Component Software: Beyond Object-Oriented Programming
– Szyperski
- 1998
|
|
719
|
On understanding types, data abstraction, and polymorphism
– Cardelli, Wegner
- 1985
|
|
648
|
Eiffel: The Language
– Meyer
- 1992
|
|
349
|
A behavioral notion of subtyping
– Liskov, Wing
- 1994
|
|
306
|
Using Prototypical Objects to Implement Shared Behavior in ObjectOriented Systems
– Lieberman
- 1986
|
|
232
|
Inheritance is not subtyping
– Cook, Hill, et al.
- 1990
|
|
200
|
Dimensions of object-based language design
– Wegner
- 1987
|
|
180
|
Encapsulation and inheritance in object-oriented programming languages
– Snyder
- 1986
|
|
100
|
Inheritance and subtyping in a parallel object-oriented language
– America
- 1987
|
|
99
|
On the notion of inheritance
– Taivalsaari
- 1996
|
|
69
|
The design of a class mechanism for Moby
– Fisher, Reppy
- 1999
|
|
61
|
The Java Language Specification. Addison-Wesley, 2nd edition
– Gosling, Joy, et al.
- 2000
|
|
48
|
The Early History of Smalltalk. The
– Kay
- 1993
|
|
33
|
A Study of the Fragile Base Class Problem
– Mikhajlov, Sekerinski
- 1998
|
|
29
|
Generic wrappers
– Büchi, Weck
- 2000
|
|
14
|
Inheritance modeled with explicit bindings: an approach to typed inheritance
– Hauck
- 1993
|
|
6
|
On Certain Basic Properties of Component-Oriented Programming Languages
– Fröhlich, Franz
- 2001
|
|
3
|
On Reconciling Objects, Components, and Efficiency in Programming Languages
– Fröhlich, Gal, et al.
- 2002
|
|
1
|
for “decompose,” definition provided courtesy of
– Query
|