Abstract
We develop an imperative calculus that provides a formal model for both single and mixin inheritance. By introducing classes and mixins as the basic object-oriented constructs in a λ-calculus with records and references, we obtain a system with an intuitive operational semantics. New classes are produced by applying mixins to superclasses. Objects are represented by records and produced by instantiating classes. The type system for objects uses only functional, record, and reference types, and there is a clean separation between subtyping and inheritance.
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
M. Abadi and L. Cardelli. A Theory of Objects. Springer-Verlag, 1996.
D. Ancona and E. Zucca. An algebraic approach to mixins and modularity. In Proc. Algebraic and Logic Programming (ALP), pages 179–193. LNCS 1139, Springer-Verlag, 1996.
K. Arnold and J. Gosling. The Java Programming Language. Addison-Wesley, 1996.
V. Bono and M. Bugliesi. Matching for the lambda calculus of objects. Theoretical Computer Science, 1998. To appear.
V. Bono and K. Fisher. An imperative, first-order calculus with object extension. In Proc. ECOOP’ 98, pages 462–497. LNCS 1445, Springer-Verlag, 1998. Preliminary version appeared in FOOL 5 proceedings.
V. Bono and L. Liquori. A subtyping for the Fisher-Honsell-Mitchell lambda calculus of objects. In Proc. CSL’ 94, pages 16–30. LNCS 933, Springer-Verlag, 1995.
V. Bono, A. Patel, V. Shmatikov, and J. C. Mitchell. A core calculus of classes and objects. In Proc. 15th Conference on the Mathematical Foundations of Programming Semantics (MFPS’ 99), 1999. To appear.
V. Bono, A. Patel, V. Shmatikov, and J. C. Mitchell. A core calculus of object, classes, and mixins. Technical Report, The University of Birmingham and Stanford University, 1999. Forthcoming.
N. Boyen, C. Lucas, and P. Steyaert. Generalized mixin-based inheritance to support multiple inheritance. Technical Report vub-prog-tr-94-12, Vrije Universiteit Brussel, 1994.
G. Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah, 1992.
G. Bracha and W. Cook. Mixin-based inheritance. In Proc. OOPSLA’ 90, pages 303–311, 1990.
G. Bracha and G. Lindstrom. Modularity meets inheritance. In Proc. International Conference on Computer Languages (ICCL’ 92), pages 282–290, 1992.
K.B. Bruce. Safe type checking in a statically-typed object-oriented programming language. In Proc. POPL’ 93, pages 285–298, 1993.
K.B. Bruce. A paradigmatic object-oriented language: design, static typing and semantics. J. Functional Programming, 4(2):127–206, 1994.
K.B. Bruce, L. Cardelli, G. Castagna, The Hopkins Object Group, G. Leavens, and B. C. Pierce. On binary methods. Theory and Practice of Object Systems, 1(3):217–238, 1995.
K.B. Bruce, L. Cardelli, and B. C. Pierce. Comparing object encodings. In Proc. TACS’ 97, pages 415–438. LNCS 1281, Springer-Verlag, 1997.
K.B. Bruce, L. Petersen, and A. Finch. Subtyping is not a good “match” for object-oriented languages. In Proc. ECOOP’ 97, pages 104–127. LNCS 1241, Springer-Verlag, 1997.
K.B. Bruce, A. Schuett, and R. van Gent. PolyTOIL: A type-safe polymorphic object-oriented language. In Proc. ECOOP’ 95, pages 26–51. LNCS 952, Springer-Verlag, 1995.
L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, 1985.
W. Cook, W. Hill, and P. Canning. Inheritance is not subtyping. In Proc. POPL’ 90, pages 125–135, 1990.
W. R. Cook. A Denotational Semantics of Inheritance. PhD thesis, Brown University, 1989.
E. Crank and M. Felleisen. Parameter-passing and the lambda calculus. In Proc. POPL’ 91, pages 233–244, 1991.
J. Eifrig, S. Smith, and V. Trifonov. Sound polymorphic type inference for objects. In Proc. OOPSLA’ 95, pages 169–184, 1995.
M. Felleisen and R. Hieb. The revised report on the syntactic theories of sequential control and state. Theoretical Computer Science, 103(2):235–271, 1992.
R. Findler and M. Flatt. Modular object-oriented programming with units and mixins. In Proc. ICFP’ 98, pages 94–104, 1998.
K. Fisher. Type Systems for Object-Oriented Programming Languages. PhDthesis, Stanford University, 1996.
K. Fisher, F. Honsell, and J. C. Mitchell. A lambda-calculus of objects and method specialization. Nordic J. of Computing, 1(1):3–37, 1994. Preliminary version appeared in Proc. LICS’ 93, pp. 26–38.
K. Fisher and J. C. Mitchell. A delegation-based object calculus with subtyping. In Proc. 10th International Conference on Fundamentals of Computation Theory (FCT’ 95), pages 42–61. LNCS 965, Springer-Verlag, 1995.
K. Fisher and J. C. Mitchell. On the relationship between classes, objects, and data abstraction. Theory and Practice of Object Systems, 4(1):3–26, 1998. Preliminary version appeared in Marktoberdorf’ 97 proceedings.
M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proc. POPL’ 98, pages 171–183, 1998.
M. Hofmann and B. C. Pierce. Positive subtyping. Information and Computation, 126(1):11–33, 1996. Preliminary version appeared in Proc. POPL’ 95.
S. Kamin and U. Reddy. Two semantic models of object-oriented languages. In C. Gunther and J. C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming. MIT Press, 1994.
S. Keene. Object-Oriented Programming in Common Lisp. Addison-Wesley, 1989
X. Leroy, D. Rémy, J. Vouillon, and D. Doligez. The Objective Caml system, documentation and user’s guide. http://caml.inria.fr/ocaml/htmlman/, 1999.
M. Van Limberghen and T. Mens. Encapsulation and composition as orthogonal operators on mixins: a solution to multiple inheritance problems. Object Oriented Systems, 3(1):1–30, 1996.
O. Lehrmann Madsen, B. Moller-Pedersen, and K. Nygaard. Object-Oriented Programming in the BETA Language. Addison-Wesley, 1993.
I. Mason and C. Talcott. Programming, transforming, and proving with function abstractions and memories. In Proc. ICALP’ 89, pages 574–588. LNCS 372, Springer-Verlag, 1989.
D. Moon. Object-oriented programming with Flavors. In Proc. OOPSLA’ 86, pages 1–8, 1986.
B. C. Pierce and D. N. Turner. Simple type-theoretic foundations for object-oriented programming. J. Functional Programming, 4(2):207–248, 1994. Preliminary version appeared in Proc. POPL’ 93 under the title Object-Oriented Programming Without Recursive Types.
U. Reddy. Objects as closures: Abstract semantics of object-oriented languages. In Proc. Conference on Lisp and Functional Programming, pages 289–297, 1988.
Y. Smaragdakis and D. Batory. Implementing layered designs with mixin layers. In Proc. ECOOP’ 98, pages 550–570, 1998.
B. Stroustrup. The C++ Programming Language (3rd ed.). Addison-Wesley, 1997.
M. VanHilst and D. Notkin. Using role components to implement collaboration-based designs. In Proc. OOPSLA’ 96, pages 359–369, 1996.
M. Wand. Type inference for objects with instance variables and inheritance. In C. Gunther and J. C. Mitchell, editors, Theoretical Aspects of Object-Oriented Programming. MIT Press, 1994.
A. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115(1):38–94, 1994.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Bono, V., Patel, A., Shmatikov, V. (1999). A Core Calculus of Classes and Mixins. In: Guerraoui, R. (eds) ECOOP’ 99 — Object-Oriented Programming. ECOOP 1999. Lecture Notes in Computer Science, vol 1628. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48743-3_3
Download citation
DOI: https://doi.org/10.1007/3-540-48743-3_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66156-6
Online ISBN: 978-3-540-48743-2
eBook Packages: Springer Book Archive