Designing an object-oriented programming language with behavioural subtyping

  • Pierre America
Technical Contributions
Part of the Lecture Notes in Computer Science book series (LNCS, volume 489)


This paper describes the design of the parallel object-oriented programming language POOL-I. We concentrate on the type system of the language and specifically on the aspects of subtyping and genericity. POOL-I is the first language we know of that includes subtyping and inheritance as completely separate language mechanisms. By decoupling these two, which have been strongly tied together in other statically typed object-oriented languages with inheritance, a much cleaner language design can be obtained and a much more flexible use of both mechanisms can be made in actual programs.

In POOL-I subtyping is based only on the externally observable behaviour of objects. This includes not only their signature (the names of available methods and their parameter and result types) but also more detailed information about this behaviour. We also present a preliminary formalism in which these properties can be specified. Finally we introduce the more advanced features of the POOL-I type system, such as bounded genericity and dynamic type manipulation.


Abstract State Type Person Concrete State Type Employee String Method 
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.


  1. [Ame86]
    Pierre America. A proof theory for a sequential version of POOL. ESPRIT Project 415 Document 188, Philips Research Laboratories, Eindhoven, the Netherlands, October 1986.Google Scholar
  2. [Ame87a]
    Pierre America. Inheritance and subtyping in a parallel object-oriented language. In ECOOP '87: European Conference on Object-Oriented Programming, Paris, France, June 15–17, 1987. Springer Lecture Notes in Computer Science, Volume 276, pages 234–242.Google Scholar
  3. [Ame87b]
    Pierre America. POOL-T: A parallel object-oriented language. In Akinori Yonezawa and Mario Tokoro, editors, Object-Oriented Concurrent Programming, pages 199–220. MIT Press, 1987.Google Scholar
  4. [Ame89]
    Pierre America. Issues in the design of a parallel object-oriented language. Formal Aspects of Computing, 1(4):366–411, 1989.Google Scholar
  5. [AvdL90]
    Pierre America and Frank van der Linden. A parallel object-oriented language with inheritance and subtyping. In Proceedings of the ECOOP/OOPSLA Conference, Ottawa, Canada, October, 21–25, 1990.Google Scholar
  6. [Car88]
    Luca Cardelli. A semantics of multiple inheritance. Information and Computation, 76:138–164, 1988.Google Scholar
  7. [CHC89]
    William Cook, Walt Hill, and Peter Canning. Inheritance is not subtyping. Report STL-89-17, Hewlett-Packard Laboratories, Palo Alto, California, July 1989. In Proceedings of the ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL), January 17–19, 1990.Google Scholar
  8. [DN66]
    Ole-Johan Dahl and Kristen Nygaard. Simula: An ALGOL-based simulation language. Communications of the ACM, 9(9):671–678, September 1966.Google Scholar
  9. [GR83]
    Adele Goldberg and David Robson. Smalltalk-80, The Language and its Implementation. Addison-Wesley, 1983.Google Scholar
  10. [Hoa72]
    C. A. R. Hoare. Proof of correctness of data representations. Acta Informatica, 1:271–281, 1972.Google Scholar
  11. [Mey88]
    Bertrand Meyer. Object-Oriented Software Construction. Prentice-Hall, 1988.Google Scholar
  12. [Mit88]
    John C. Mitchell. Polymorphic type inference and containment. Information and Computation, 76:211–249, 1988.Google Scholar
  13. [SB86]
    Mark Stefik and Daniel G. Bobrow. Object-oriented programming: Themes and variations. AI Magazine, 6(4):40–62, January 1986.Google Scholar
  14. [SCB*86]
    Craig Schaffert, Topher Cooper, Bruce Bullis, Mike Kilian, and Carrie Wilpolt. An introduction to Trellis/Owl. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), Portland, Oregon, September 1986, pages 9–16.Google Scholar
  15. [Sny86]
    Alan Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), Portland, Oregon, September 1986, pages 38–45.Google Scholar
  16. [WLH81]
    William A. Wulf, Roy Levin, and Samuel P. Harbison. HYDRA/C.mmp: An Experimental Computer System. McGraw-Hill, 1981.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1991

Authors and Affiliations

  • Pierre America
    • 1
  1. 1.Philips Research LaboratoriesEindhovenThe Netherlands

Personalised recommendations