Skip to main content

Higher-Order Hierarchies

  • Conference paper
Book cover ECOOP 2003 – Object-Oriented Programming (ECOOP 2003)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2743))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aksit, M.: On the Design of the Object-Oriented Language Sina. PhD thesis, University of Twente, Enschede, The Netherlands (1989)

    Google Scholar 

  2. 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)

    Chapter  Google Scholar 

  3. Chambers, C.: The Cecil Language, Specification and Rationale. Dept. of Comp.Sci. and Eng., Univ. of Washington, Seattle, Washington (1997)

    Google Scholar 

  4. Cook, W.R.: A Denotational Semantics of Inheritance. PhD thesis, Brown University (1989)

    Google Scholar 

  5. 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)

    Google Scholar 

  6. Ernst, E.: Propagating class and method combination. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 67–91. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  7. Ernst, E.: Family polymorphism. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 303–326. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  8. Ernst, E.: Safe dynamic multiple inheritance. Nordic Journal of Computing 9(2002), 191–208 (2002)

    MATH  Google Scholar 

  9. Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns – Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading (1995)

    Google Scholar 

  10. Goldberg, A., Robson, D.: Smalltalk–80: The Language. Addison-Wesley, Reading (1989)

    MATH  Google Scholar 

  11. 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)

    Google Scholar 

  12. Igarashi, A., Pierce, B.C.: Foundations for virtual types. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, p. 161. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  13. Jones, S.P.: Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, Cambridge (2003) (to appear)

    Google Scholar 

  14. Joy, B., Steele, G., Gosling, J., Bracha, G.: Java(TM) Language Specification, 2nd edn. Addison-Wesley Publishing Company, Reading (2000)

    Google Scholar 

  15. 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)

    Chapter  Google Scholar 

  16. 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)

    Chapter  Google Scholar 

  17. Liskov, B.: Data abstraction and hierarchy. ACM SIGPLAN Notices 23(5), 17–34 (1988); Revised version of the keynote address given at OOPSLA 1987

    Article  Google Scholar 

  18. 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)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. Madsen, O.L., Møller-Pedersen, B., Nygaard, K.: Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, Reading (1993)

    Google Scholar 

  22. 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)

    Google Scholar 

  23. Meyer, B.: Object-oriented Software Construction, 2nd edn. Prentice Hall, New York (1997)

    MATH  Google Scholar 

  24. Mezini, M., Lieberherr, K.: Adaptive plug-and-play components for evolutionary software development. ACM SIGPLAN Notices 33(10), 97–116 (1998)

    Article  Google Scholar 

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

    Google Scholar 

  26. Milner, R., Tofte, M., Harper, R.W., MacQueen, D.: The Definition of Standard ML. MIT Press, Cambridge (1997)

    Google Scholar 

  27. Odersky, M.: Report on the programming language Scala. Technical report, Ecole Polytechnique Federale de Lausanne (2002)

    Google Scholar 

  28. Ossher, H., Harrison, W.: Combination of inheritance hierarchies. In: Proceedings OOPSLA 1992, pp. 25–40 (October 1992)

    Google Scholar 

  29. Ostermann, K.: Dynamically composable collaborations with delegation layers. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 89–110. Springer, Heidelberg (2002)

    Chapter  Google Scholar 

  30. 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)

    Chapter  Google Scholar 

  31. Stroustrup, B.: The C++ Programming Language, 3rd edn. Addison-Wesley, Reading (1997)

    Google Scholar 

  32. Thomsen, K.S.: Multiple Inheritance, a Structuring Mechanism for Data, Processes and Procedures. Datalogisk afdeling, AArhus Universitet, Århus, Denmark (1986), DAIMI PB-209

    Google Scholar 

  33. 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)

    Chapter  Google Scholar 

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

  35. Winskel, G.: The Formal Semantics of Programming Languages – an Introduction. Foundations of Computing Series. MIT Press, London (1993)

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics