Skip to main content

Modeling subobject-based inheritance

  • Conference paper
  • First Online:

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

Abstract

A model of subobjects and subobject selection gives us a concise expression of key semantic relationships in a variety of inheritance-based languages. Subobjects and their selection have been difficult to reason about explicitly because they are not explicit in the languages that support them. The goal of this paper is to present a relatively simple calculus to describe subobjects and subobject selection explicitly. Rather than present any deep theorems here, we develop a general calculus that can be used to explore the design of inheritance systems.

Research partially supported by NSF grant CCR-9302114.

Received support from NSF grants CCR-9304144 and CCR-9404646.

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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Information Processing Systems Accredited Standards Committee X3. Working paper for draft proposed international standard for information systems—programming language C++. Draft of 28 April 1995.

    Google Scholar 

  2. Luca Cardelli and Peter Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.

    Article  Google Scholar 

  3. Daniel J. Carnese. Multiple inheritance in contemporary programming languages. Technical Report MIT/LCS/TR-328, M.I.T., Sept. 1984.

    Google Scholar 

  4. Bernard Carré and Jean-Marc Geib. The point of view notion for multiple inheritance. In Proceedings OOPSLA-ECOOP '90, ACM SIGPLAN Notices, pages 312–321, 1990.

    Google Scholar 

  5. Adriana B. Compagnoni and Benjamin C. Pierce. Multiple inheritance via intersection types. Technical Report ECS-LFCS-93-275, University of Edinburgh, 1993. Also Technical Report 93-18, C.S. Department, Catholic University Nijmegen.

    Google Scholar 

  6. William R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown University, 1989. Technical Report CS-89-33.

    Google Scholar 

  7. William R. Cook and Jens Palsberg. A denotational semantics of inheritance and its correctness. In Proceedings OOPSLA '89, ACM SIGPLAN Notices, pages 433–443, 1989.

    Google Scholar 

  8. Ole-Johan Dahl and Kristen Nygaard. Simula—an Algol-based simulation language. CACM, 9(9):671–678, September 1966.

    Google Scholar 

  9. Roland Ducournau, Michel Habib, Marianne Huchard, and Marie-Laure Mugnier. Proposal for a monotonic multiple inheritance linearization. In Proceedings OOPSLA '94, ACM SIGPLAN Notices, pages 164–175, 1994.

    Google Scholar 

  10. Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.

    Google Scholar 

  11. Samuel Kamin. Inheritance in Smalltalk-80: A denotational definition. In Proceedings POPL '88, pages 80–87, 1988.

    Google Scholar 

  12. Gregor Kiczales, Jim des Rivières, and Daniel G. Bobrow. The Art of the Metaobject Protocol. The MIT Press, 1991.

    Google Scholar 

  13. JØrgen Lindskov Knudsen. Name collision in multiple classification hierarchies. In Proceedings ECOOP '88, LNCS 322, pages 93–108. Springer-Verlag, 1988.

    Google Scholar 

  14. Stein Krogdahl. Multiple inheritance in Simula-like languages. BIT, 25:318–326, 1984.

    Article  Google Scholar 

  15. Benjamin C. Pierce. Programming with Intersection Types and Bounded Polymorphism. PhD thesis, Carnegie-Mellon University, Pittsburgh, PA, December 1991.

    Google Scholar 

  16. Uday Reddy. Objects as closures: Abstract semantics of object-oriented languages. In Conf. on LISP and Functional Programming, 1988.

    Google Scholar 

  17. Jonathan G. Rossie Jr. and Daniel P. Friedman. An algebraic semantics of subobjects. In Proceedings OOPSLA '95, ACM SIGPLAN Notices, pages 187–199, 1995. Published as Proceedings OOPSLA '95, ACM SIGPLAN Notices, volume 30, number 10.

    Google Scholar 

  18. Markku Sakkinen. Disciplined inheritance. In Proceedings ECOOP '89, The British Computer Society Workshop Series, pages 39–56. Cambridge University Press, 1989.

    Google Scholar 

  19. Markku Sakkinen. A critique of the inheritance principles of C++. Computing Systems, 5(1):69–110, 1992.

    Google Scholar 

  20. Markku Sakkinen. A critique of the inheritance principles of C++: Corrigendum. Computing Systems, 5(3), 1992.

    Google Scholar 

  21. Adam Seligman. FACTS: A formal analysis of C++: Type rules and semantics. B.A. Honors Thesis, Williams College, May 1995.

    Google Scholar 

  22. Andrew Shalit, Orca Starbuck, and David Moon. Dylan Reference Manual. Apple Computer, Inc., 1995. Draft of September 29, 1995.

    Google Scholar 

  23. Alan Snyder. Inheritance and the development of encapsulated software components. In B. Shriver and P. Wegner, editors, Research Directions in Object-Oriented Programming, pages 165–188. MIT Press, 1987.

    Google Scholar 

  24. Alan Snyder. Modeling the C++ object model, an application of an abstract object model. In Proceedings ECOOP '91, LNCS 512, pages 1–20. Springer-Verlag, 1991.

    Google Scholar 

  25. Guy L. Steele Jr. Common Lisp: The Language. Digital Press, 2nd edition, 1990.

    Google Scholar 

  26. Bjarne Stroustrup. Multiple inheritance for C++. Computing Systems, 2(4), 1989.

    Google Scholar 

  27. Charles Wallace. The semantics of the C++ programming language. In Egon Boerger, editor, Specification and Validation Methods for Programming Languages, pages 131–163. Clarendon Press, Oxford, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jonathan G. Rossie Jr. .

Editor information

Pierre Cointe

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Rossie, J.G., Friedman, D.P., Wand, M. (1996). Modeling subobject-based inheritance. In: Cointe, P. (eds) ECOOP ’96 — Object-Oriented Programming. ECOOP 1996. Lecture Notes in Computer Science, vol 1098. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0053065

Download citation

  • DOI: https://doi.org/10.1007/BFb0053065

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-61439-5

  • Online ISBN: 978-3-540-68570-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics