Abstract
This paper introduces the notion of higher-order inheritance hierarchies. They are useful because they provide well-known benefits of object-orientation at the level of entire hierarchies—benefits which are not available with current approaches. Three facets must be adressed: First, it must be possible to create hierarchies incrementally based on existing hierarchies, such that commonalities are expressed via reuse, not duplication. Second, the hierarchies must themselves be organized into hierarchies, such that their relationships are made explicit and can be exploited in a type safe manner. Finally, it must be possible to write generic code that works on every hierarchy derived from the hierarchy for which it was written. This paper presents a language design that supports such a notion of higher-order hierarchies. It has been implemented in context of a full-fledged, statically typed language.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Aksit, M.: On the Design of the Object-Oriented Language Sina. PhD thesis, University of Twente, Enschede, The Netherlands (1989)
Bruce, K., Odersky, M., Wadler, P.: A statically safe alternative to virtual types. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 523–549. Springer, Heidelberg (1998)
Chambers, C.: The Cecil Language, Specification and Rationale. Dept. of Comp.Sci. and Eng., Univ. of Washington, Seattle, Washington (1997)
Cook, W.R.: A Denotational Semantics of Inheritance. PhD thesis, Brown University (1989)
Ernst, E.: gbeta – A Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhDthesis, Devise, Department of Computer Science, University of Aarhus, Aarhus, Denmark (June 1999)
Ernst, E.: Propagating class and method combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)
Ernst, E.: Family polymorphism. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)
Ernst, E.: Safe dynamic multiple inheritance. Nordic Journal of Computing 9(2002), 191–208 (2002)
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)
Goldberg, A., Robson, D.: Smalltalk–80: The Language. Addison-Wesley, Reading (1989)
Harrison, W., Ossher, H.: Subject-oriented programming (A critique of pure objects). In: Proceedings OOPSLA 1993, ACM SIGPLAN Notices, vol. 28(10), pp. 411–428 (October 1993)
Igarashi, A., Pierce, B.C.: Foundations for virtual types. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, p. 161. Springer, Heidelberg (1999)
Jones, S.P.: Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003) (to appear)
Joy, B., Steele, G., Gosling, J., Bracha, G.: Java(TM) Language Specification, 2nd edn. Addison-Wesley Publishing Company, Reading (2000)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–353. Springer, Heidelberg (2001)
Kiczales, G., Lamping, J., Mendhekar, A., Maeda, C., Lopes, C., Loingtier, J.-M., Irwin, J.: Aspect-oriented programming. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 220–242. Springer, Heidelberg (1997)
Liskov, B.: Data abstraction and hierarchy. ACM SIGPLAN Notices 23(5), 17–34 (1988); Revised version of the keynote address given at OOPSLA 1987
Litvinov, V.: Constraint-based polymorphism in Cecil: Towards a practical and static type system. In: Chambers, C. (ed.) Proceedings OOPSLA 1998, ACM SIGPLAN Notices, Vancouver, vol. 33(10). ACM Press, New York (1998)
Madsen, O.L.: Semantic analysis of virtual classes and nested classes. In: Northrop, L.M. (ed.) Proceedings OOPSLA 1999, ACM SIGPLAN Notices, Denver, vol. 34(10). ACM Press, New York (1999)
Madsen, O.L., Møller-Pedersen, B.: Virtual classes: A powerful mechanism in object-oriented programming. In: Proceedings OOPSLA 1989, ACM SIGPLAN Notices, vol. 24(10), pp. 397–406 (October 1989)
Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, Reading (1993)
McDirmid, S., Flatt, M., Hsieh, W.: Jiazzi: New-age components for old-fashioned Java. In: Proceedings of OOPSLA 2001, SIGPLAN Notices, vol. 36(11), pp. 211–222. ACM, New York (2001)
Meyer, B.: Object-oriented Software Construction, 2nd edn. Prentice Hall, New York (1997)
Mezini, M., Lieberherr, K.: Adaptive plug-and-play components for evolutionary software development. ACM SIGPLAN Notices 33(10), 97–116 (1998)
Mira Mezini and Klaus Ostermann. Integrating independent components with on-demand remodularization. In Cindy Norris and Jr. James B. Fenwick, editors, Proceedings of OOPSLA’02, volume 37, 11 of ACM SIGPLAN Notices, pages 52–67, New York, November 4–8 2002. ACM Press. 324
Milner, R., Tofte, M., Harper, R.W., MacQueen, D.: The Definition of Standard ML. MIT Press, Cambridge (1997)
Odersky, M.: Report on the programming language Scala. Technical report, Ecole Polytechnique Federale de Lausanne (2002)
Ossher, H., Harrison, W.: Combination of inheritance hierarchies. In: Proceedings OOPSLA 1992, pp. 25–40 (October 1992)
Ostermann, K.: Dynamically composable collaborations with delegation layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 89–110. Springer, Heidelberg (2002)
Smaragdakis, Y., Batory, D.: Implementing layered design with mixin layers. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 550–570. Springer, Heidelberg (1998)
Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (1997)
Thomsen, K.S.: Multiple Inheritance, a Structuring Mechanism for Data, Processes and Procedures. Datalogisk afdeling, AArhus Universitet, Århus, Denmark (1986), DAIMI PB-209
Thorup, K.K.: Genericity in Java with virtual types. In: Aksit, M., Matsuoka, S. (eds.) ECOOP 1997. LNCS, vol. 1241, pp. 444–471. Springer, Heidelberg (1997)
Torgersen, M.: Virtual types are statically safe. In: 5th Workshop on Foundations of Object-Oriented Languages (FOOL) (January 1998), at http://pauillac.inria.fr/~remy/fool/program.html
Winskel, G.: The Formal Semantics of Programming Languages – an Introduction. Foundations of Computing Series. MIT Press, London (1993)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ernst, E. (2003). Higher-Order Hierarchies. In: Cardelli, L. (eds) ECOOP 2003 – Object-Oriented Programming. ECOOP 2003. Lecture Notes in Computer Science, vol 2743. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-45070-2_14
Download citation
DOI: https://doi.org/10.1007/978-3-540-45070-2_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-40531-3
Online ISBN: 978-3-540-45070-2
eBook Packages: Springer Book Archive