Modeling subobject-based inheritance

  • Jonathan G. RossieJr.Email author
  • Daniel P. Friedman
  • Mitchell Wand
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1098)


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.


Actual Class Base Class Effective Class Multiple Inheritance Inheritance System 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 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. 2.
    Luca Cardelli and Peter Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.CrossRefGoogle Scholar
  3. 3.
    Daniel J. Carnese. Multiple inheritance in contemporary programming languages. Technical Report MIT/LCS/TR-328, M.I.T., Sept. 1984.Google Scholar
  4. 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. 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. 6.
    William R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown University, 1989. Technical Report CS-89-33.Google Scholar
  7. 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. 8.
    Ole-Johan Dahl and Kristen Nygaard. Simula—an Algol-based simulation language. CACM, 9(9):671–678, September 1966.Google Scholar
  9. 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. 10.
    Margaret A. Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual. Addison-Wesley, 1990.Google Scholar
  11. 11.
    Samuel Kamin. Inheritance in Smalltalk-80: A denotational definition. In Proceedings POPL '88, pages 80–87, 1988.Google Scholar
  12. 12.
    Gregor Kiczales, Jim des Rivières, and Daniel G. Bobrow. The Art of the Metaobject Protocol. The MIT Press, 1991.Google Scholar
  13. 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. 14.
    Stein Krogdahl. Multiple inheritance in Simula-like languages. BIT, 25:318–326, 1984.CrossRefGoogle Scholar
  15. 15.
    Benjamin C. Pierce. Programming with Intersection Types and Bounded Polymorphism. PhD thesis, Carnegie-Mellon University, Pittsburgh, PA, December 1991.Google Scholar
  16. 16.
    Uday Reddy. Objects as closures: Abstract semantics of object-oriented languages. In Conf. on LISP and Functional Programming, 1988.Google Scholar
  17. 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. 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. 19.
    Markku Sakkinen. A critique of the inheritance principles of C++. Computing Systems, 5(1):69–110, 1992.Google Scholar
  20. 20.
    Markku Sakkinen. A critique of the inheritance principles of C++: Corrigendum. Computing Systems, 5(3), 1992.Google Scholar
  21. 21.
    Adam Seligman. FACTS: A formal analysis of C++: Type rules and semantics. B.A. Honors Thesis, Williams College, May 1995.Google Scholar
  22. 22.
    Andrew Shalit, Orca Starbuck, and David Moon. Dylan Reference Manual. Apple Computer, Inc., 1995. Draft of September 29, 1995.Google Scholar
  23. 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. 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. 25.
    Guy L. Steele Jr. Common Lisp: The Language. Digital Press, 2nd edition, 1990.Google Scholar
  26. 26.
    Bjarne Stroustrup. Multiple inheritance for C++. Computing Systems, 2(4), 1989.Google Scholar
  27. 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

Copyright information

© Springer-Verlag Berlin Heidelberg 1996

Authors and Affiliations

  • Jonathan G. RossieJr.
    • 1
    Email author
  • Daniel P. Friedman
    • 1
  • Mitchell Wand
    • 2
  1. 1.Department of Computer ScienceIndiana UniversityBloomingtonUSA
  2. 2.College of Computer ScienceNortheastern UniversityBostonUSA

Personalised recommendations