Dynamic overloading with copy semantics in object-oriented languages: a formal account

Lorenzo Bettini; Sara Capecchi; Betti Venneri

RAIRO - Theoretical Informatics and Applications (2009)

  • Volume: 43, Issue: 3, page 517-565
  • ISSN: 0988-3754

Abstract

top
Mainstream object-oriented languages often fail to provide complete powerful features altogether, such as, multiple inheritance, dynamic overloading and copy semantics of inheritance. In this paper we present a core object-oriented imperative language that integrates all these features in a formal framework. We define a static type system and a translation of the language into the meta-language λ_object,, in order to account for semantic issues and prove type safety of our proposal.

How to cite

top

Bettini, Lorenzo, Capecchi, Sara, and Venneri, Betti. "Dynamic overloading with copy semantics in object-oriented languages: a formal account." RAIRO - Theoretical Informatics and Applications 43.3 (2009): 517-565. <http://eudml.org/doc/250612>.

@article{Bettini2009,
abstract = { Mainstream object-oriented languages often fail to provide complete powerful features altogether, such as, multiple inheritance, dynamic overloading and copy semantics of inheritance. In this paper we present a core object-oriented imperative language that integrates all these features in a formal framework. We define a static type system and a translation of the language into the meta-language λ\_object,, in order to account for semantic issues and prove type safety of our proposal. },
author = {Bettini, Lorenzo, Capecchi, Sara, Venneri, Betti},
journal = {RAIRO - Theoretical Informatics and Applications},
keywords = {Object-oriented languages; dynamic overloading; multi-methods; copy semantics; typed lambda calculus; type systems.; object-oriented languages; type systems},
language = {eng},
month = {3},
number = {3},
pages = {517-565},
publisher = {EDP Sciences},
title = {Dynamic overloading with copy semantics in object-oriented languages: a formal account},
url = {http://eudml.org/doc/250612},
volume = {43},
year = {2009},
}

TY - JOUR
AU - Bettini, Lorenzo
AU - Capecchi, Sara
AU - Venneri, Betti
TI - Dynamic overloading with copy semantics in object-oriented languages: a formal account
JO - RAIRO - Theoretical Informatics and Applications
DA - 2009/3//
PB - EDP Sciences
VL - 43
IS - 3
SP - 517
EP - 565
AB - Mainstream object-oriented languages often fail to provide complete powerful features altogether, such as, multiple inheritance, dynamic overloading and copy semantics of inheritance. In this paper we present a core object-oriented imperative language that integrates all these features in a formal framework. We define a static type system and a translation of the language into the meta-language λ_object,, in order to account for semantic issues and prove type safety of our proposal.
LA - eng
KW - Object-oriented languages; dynamic overloading; multi-methods; copy semantics; typed lambda calculus; type systems.; object-oriented languages; type systems
UR - http://eudml.org/doc/250612
ER -

References

top
  1. M. Abadi and L. Cardelli, A Theory of Objects. Springer (1996).  
  2. E. Allen, D. Chase, J. Hallett, V. Luchangco, J.W. Maessen, S. Ryu, G.L. Steele and S. Tobin-Hochstadt, The Fortress language specification Version 1.0 (2006). Sun Microsystems, available on line.  
  3. D. Ancona, S. Drossopoulou and E. Zucca, Overloading and Inheritance. In FOOL 8 (2001).  
  4. K. Arnold, J. Gosling and D. Holmes, The Java Programming Language. Addison-Wesley, 3rd edition (2000).  
  5. A. Alexandrescu, Modern C++ Design, Generic Programming and Design Patterns Applied. Addison Wesley (2001).  
  6. J. Boyland and G. Castagna, Parasitic methods: an implementation of multi-methods for Java, In OOPSLA '97: Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications ACM Press, New York, NY, USA (1997) 66–76.  
  7. K.B. Bruce, L. Cardelli, G. Castagna, The Hopkins Object Group, edited by G. Leavens and B.C. Pierce, On binary methods. Theory and Practice of Object Systems1 (1995) 217–238.  
  8. L. Bettini, S. Capecchi and B. Venneri, Double dispatch in C++. Software – Practice and Experience36 (2006) 581–613.  
  9. D. Bobrow, L. Demichiel, R. Gabriel, S. Keene and G. Kiczales, Common Lisp Object System Specification. Lisp and Symbolic Computation1 (1989) 245–394.  
  10. Building an Object-Oriented Database System, The Story of O2. edited by F. Bancilhon, C. Delobel and P. Kanellakis. Morgan Kaufmann (1992).  
  11. D. Beyer, C. Lewerentz and F. Simon, Impact of Inheritance on Metrics for Size, Coupling, and Cohesion in Object-Oriented Systems. In IWSM '00: Proceedings of the 10th International Workshop on New Approaches in Software Measurement, Springer (2000) 1–17.  
  12. K.B. Bruce, Foundations of Object-Oriented Languages: Types and Semantics. MIT Press (2002).  
  13. L. Cardelli, A semantics of multiple inheritance. Inform. Comput.76 (1988) 138–164.  
  14. P. Carbonetto, An implementation for multiple dispatch in Java using the elide framework. citeseer.nj.nec.com/575037.html (2002).  
  15. G. Castagna, A meta-language for typed object-oriented languages. Theoretical Computer Science151 (1995) 297–352.  
  16. G. Castagna, Object-oriented programming: a unified foundation. Birkhauser Boston Inc., Cambridge, MA, USA (1997).  
  17. G. Castagna, G. Ghelli and G. Longo, in A semantics for λ-early: a calculus with overloading and early binding. edited by M. Bezem and J.F. Groote, International Conference on Typed Lambda Calculi and Applications. Lect. Notes Comput. Sci. 664 (1993) 107–123.  
  18. G. Castagna, G. Ghelli and G. Longo, A calculus for overloaded functions with subtyping. Inform. Comput.117 (1995) 115–135.  
  19. C. Chambers and G.T. Leavens, Typechecking and modules for multimethods. ACM Trans. Program. Lang. Syst.17 (1995) 805–843.  
  20. C. Chambers and G.T. Leavens, BeCecil, A Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing. In The 4th Int. Workshop on Foundations of Object-Oriented Languages, FOOL 4 (1996).  
  21. C. Clifton, G.T. Leavens, C. Chambers and T. Millstein, MultiJava: modular open classes and symmetric multiple dispatch for Java, In OOPSLA '00: Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. ACM Press New York, NY, USA (2000) 130–145.  
  22. L. Cardelli and P. Wegner, On understanding types, data abstraction, and polymorphism. ACM Comput. Surv.17 (1985) 471–523.  
  23. L.G. DeMichiel and R.P. Gabriel, The Common Lisp Object System: An Overview, In Proc. ECOOP. Lect. Notes Comput. Sci. 276 (1987) 151–170.  
  24. C. Dutchyn, P. Lu, D. Szafron, S. Bromling and W. Holst, Multi-dispatch in the Java virtual machine: Design and implementation. In COOTS (2001) 77–92.  
  25. S. Ducasse, O. Nierstrasz, N. Schärli, R. Wuyts and A.P. Black, Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems28 (2006) 331–388.  
  26. R. Forax, E. Duris and G. Roussel, Java multi-method framework, In International Conference on Technology of Object-Oriented Languages and Systems (TOOLS '00), Sydney, Australia, Los Alamitos, California (2000). IEEE Computer Society Press.  
  27. E. Gamma, R. Helm, R. Johnson and J.M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995).  
  28. D.H.H. Ingalls, A simple technique for handling multiple polymorphism, In OOPLSA '86: Conference proceedings on Object-oriented programming systems, languages and applications. ACM Press New York, NY, USA (1986) 347–349.  
  29. A. Igarashi, B.C. Pierce and P. Wadler, Featherweight Java: a minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst.23 (2001) 396–450.  
  30. S. Keene, Object-Oriented Programming in Common Lisp. Addison-Wesley (1989).  
  31. S.B. Lippman, Inside the C++ Object Model. Addison-Wesley (1996).  
  32. G.T. Leavens and T.D. Millstein, Multiple dispatch as dispatch on tuples, In OOPSLA '98: Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications. ACM Press New York, NY, USA (1998) 374–387.  
  33. T.D. Millstein and C. Chambers, Modular statically typed multimethods. Inform. Comput.175 (2002) 76–118.  
  34. B. Meyer, Eiffel: The Language. Prentice-Hall (1991).  
  35. B. Meyer, Overloading vs. Object Technology. J. Object-Oriented Programming (2001) 3–7.  
  36. W.B. Mugridge, J. Hamer and J.G. Hosking, Multi-Methods in a Statically-Typed Programming Language, In Proc. ECOOP '91. Lect. Notes Comput. Sci. 512 (1991) 307–324.  
  37. N. Schärli, S. Ducasse, O. Nierstrasz and A. Black, Traits: Composable Units of Behavior, In Proceedings of European Conference on Object-Oriented Programming (ECOOP'03). Lect. Notes Comput. Sci. 2743 (2003) 248–274.  
  38. A. Shalit, The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language. Addison-Wesley, Reading, Mass (1997).  
  39. J. Smith, Cmm - C++ with Multimethods (2003). .  URIhttp://www.op59.net/cmm/readme.html
  40. B. Stroustrup, The C++ Programming Language. Addison-Wesley, 3rd edn. (1997).  
  41. A. Wright and M. Felleisen, A syntactic approach to type soundness. Inform. Comput.115(1) (1994) 38–94.  

NotesEmbed ?

top

You must be logged in to post comments.

To embed these notes on your page include the following JavaScript code on your page where you want the notes to appear.

Only the controls for the widget will be shown in your chosen language. Notes will be shown in their authored language.

Tells the widget how many notes to show per page. You can cycle through additional notes using the next and previous controls.

    
                

Note: Best practice suggests putting the JavaScript code just before the closing </body> tag.