Dynamic overloading with copy semantics in object-oriented languages : a formal account
RAIRO - Theoretical Informatics and Applications - Informatique Théorique et Applications, Tome 43 (2009) no. 3, pp. 517-565.

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 8lambda_object, in order to account for semantic issues and prove type safety of our proposal.

DOI : 10.1051/ita/2009008
Classification : 68N15, 68N18, 68Q55
Mots-clés : object-oriented languages, dynamic overloading, multi-methods, copy semantics, typed lambda calculus, type systems
Bettini, Lorenzo  ; Capecchi, Sara  ; Venneri, Betti 1

1 Dipartimento di Sistemi e Informatica, Università di Firenze, Italy;
@article{ITA_2009__43_3_517_0,
     author = {Bettini, Lorenzo and Capecchi, Sara and Venneri, Betti},
     title = {Dynamic overloading with copy semantics in object-oriented languages : a formal account},
     journal = {RAIRO - Theoretical Informatics and Applications - Informatique Th\'eorique et Applications},
     pages = {517--565},
     publisher = {EDP-Sciences},
     volume = {43},
     number = {3},
     year = {2009},
     doi = {10.1051/ita/2009008},
     mrnumber = {2541130},
     zbl = {1175.68094},
     language = {en},
     url = {http://archive.numdam.org/articles/10.1051/ita/2009008/}
}
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 - Informatique Théorique et Applications
PY  - 2009
SP  - 517
EP  - 565
VL  - 43
IS  - 3
PB  - EDP-Sciences
UR  - http://archive.numdam.org/articles/10.1051/ita/2009008/
DO  - 10.1051/ita/2009008
LA  - en
ID  - ITA_2009__43_3_517_0
ER  - 
%0 Journal Article
%A Bettini, Lorenzo
%A Capecchi, Sara
%A Venneri, Betti
%T Dynamic overloading with copy semantics in object-oriented languages : a formal account
%J RAIRO - Theoretical Informatics and Applications - Informatique Théorique et Applications
%D 2009
%P 517-565
%V 43
%N 3
%I EDP-Sciences
%U http://archive.numdam.org/articles/10.1051/ita/2009008/
%R 10.1051/ita/2009008
%G en
%F ITA_2009__43_3_517_0
Bettini, Lorenzo; Capecchi, Sara; Venneri, Betti. Dynamic overloading with copy semantics in object-oriented languages : a formal account. RAIRO - Theoretical Informatics and Applications - Informatique Théorique et Applications, Tome 43 (2009) no. 3, pp. 517-565. doi : 10.1051/ita/2009008. http://archive.numdam.org/articles/10.1051/ita/2009008/

[1] M. Abadi and L. Cardelli, A Theory of Objects. Springer (1996). | MR | Zbl

[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). | Zbl

[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. | MR

[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 Systems 1 (1995) 217-238.

[8] L. Bettini, S. Capecchi and B. Venneri, Double dispatch in C++. Software - Practice and Experience 36 (2006) 581-613.

[9] D. Bobrow, L. Demichiel, R. Gabriel, S. Keene and G. Kiczales, Common Lisp Object System Specification. Lisp and Symbolic Computation 1 (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. | Zbl

[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. | MR | Zbl

[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 Science 151 (1995) 297-352. | MR | Zbl

[16] G. Castagna, Object-oriented programming: a unified foundation. Birkhauser Boston Inc., Cambridge, MA, USA (1997). | MR | Zbl

[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. | MR | Zbl

[18] G. Castagna, G. Ghelli and G. Longo, A calculus for overloaded functions with subtyping. Inform. Comput. 117 (1995) 115-135. | MR | Zbl

[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 Systems 28 (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). | Zbl

[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). | Zbl

[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. | MR | Zbl

[34] B. Meyer, Eiffel: The Language. Prentice-Hall (1991). | MR | Zbl

[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). | Zbl

[39] J. Smith, Cmm - C++ with Multimethods (2003). http://www.op59.net/cmm/readme.html.

[40] B. Stroustrup, The C++ Programming Language. Addison-Wesley, 3rd edn. (1997). | Zbl

[41] A. Wright and M. Felleisen, A syntactic approach to type soundness. Inform. Comput. 115(1) (1994) 38-94. | MR | Zbl

Cité par Sources :