Combination of inheritance hierarchies
- 31 October 1992
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 27 (10), 25-40
- https://doi.org/10.1145/141937.141940
Abstract
Making extensions to existing systems is a critically important activity in object-oriented proexisting application. We are in full agreement with Lieberman [7] that one wants a small extension to behavior to require just a small extension to code, and that adding new code is good, whereas modifying existing code is bad. We call this approach “extension-by-addition” [16]. gramming. This paper proposes an approach in which extensions of all kinds are clearly separated from the base hierarchy upon which they are built, for ease of distribution and combination. Extensions, including extensions to existing classes, are written in separate, sparse extension hierarchies. The entire system is obtained by combining the extension hierarchies with the base hierarchy. Sequences of successive extensions can be combined using an extension operator, and parallel extensions can be combined using a merge operator, which might identify conflicts that must be reconciled. System building takes place at two levels: combining existing extensions from a library using these operators, and building new extensions when existing ones are not adequate. New extensions built in this way are added to the library, and so should be written to be as general and reusable as possible.Keywords
This publication has 19 references indexed in Scilit:
- Integrating coarse-grained and fine-grained tool integrationPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Attaching instance variables to method realization1 instead of classesPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Subdivided procedures: a language extension supporting extensible programmingPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- When objects collide experiences with reusing multiple class hierarchiesPublished by Association for Computing Machinery (ACM) ,1990
- Mixin-based inheritancePublished by Association for Computing Machinery (ACM) ,1990
- A denotational semantics of inheritance and its correctnessPublished by Association for Computing Machinery (ACM) ,1989
- Integrating noninterfering versions of programsACM Transactions on Programming Languages and Systems, 1989
- Common Lisp Object System specificationACM SIGPLAN Notices, 1988
- CommonLoops: merging Lisp and object-oriented programmingPublished by Association for Computing Machinery (ACM) ,1986
- On understanding types, data abstraction, and polymorphismACM Computing Surveys, 1985