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 , in order to account for semantic issues and prove type safety of our proposal.
Keywords: object-oriented languages, dynamic overloading, multi-methods, copy semantics, typed lambda calculus, type systems
Bettini, Lorenzo  ; Capecchi, Sara  ; Venneri, Betti 1
@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},
year = {2009},
publisher = {EDP Sciences},
volume = {43},
number = {3},
doi = {10.1051/ita/2009008},
mrnumber = {2541130},
zbl = {1175.68094},
language = {en},
url = {https://www.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 - https://www.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 https://www.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
[1] and , A Theory of Objects. Springer (1996). | Zbl | MR
[2] , , , , , , and , The Fortress language specification Version 1.0 (2006). Sun Microsystems, available on line.
[3] , and , Overloading and Inheritance. In FOOL 8 (2001).
[4] , and , The Java Programming Language. Addison-Wesley, 3rd edition (2000). | Zbl
[5] , Modern C++ Design, Generic Programming and Design Patterns Applied. Addison Wesley (2001).
[6] and , 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] , , , 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] , and , Double dispatch in C++. Software - Practice and Experience 36 (2006) 581-613.
[9] , , , and , 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] , and , 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] , Foundations of Object-Oriented Languages: Types and Semantics. MIT Press (2002).
[13] , A semantics of multiple inheritance. Inform. Comput. 76 (1988) 138-164. | Zbl | MR
[14] , An implementation for multiple dispatch in Java using the elide framework. citeseer.nj.nec.com/575037.html (2002).
[15] , A meta-language for typed object-oriented languages. Theoretical Computer Science 151 (1995) 297-352. | Zbl | MR
[16] , Object-oriented programming: a unified foundation. Birkhauser Boston Inc., Cambridge, MA, USA (1997). | Zbl | MR
[17] , and , 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. | Zbl | MR
[18] , and , A calculus for overloaded functions with subtyping. Inform. Comput. 117 (1995) 115-135. | Zbl | MR
[19] C. Chambers and G.T. Leavens, Typechecking and modules for multimethods. ACM Trans. Program. Lang. Syst. 17 (1995) 805-843.
[20] and , 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] , , and , 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] and , On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17 (1985) 471-523.
[23] and , The Common Lisp Object System: An Overview, In Proc. ECOOP. Lect. Notes Comput. Sci. 276 (1987) 151-170.
[24] , , , and , Multi-dispatch in the Java virtual machine: Design and implementation. In COOTS (2001) 77-92.
[25] , , , and , Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems 28 (2006) 331-388.
[26] , and , 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] , , and , Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995). | Zbl
[28] , 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] , and , Featherweight Java: a minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23 (2001) 396-450.
[30] , Object-Oriented Programming in Common Lisp. Addison-Wesley (1989). | Zbl
[31] , Inside the C++ Object Model. Addison-Wesley (1996).
[32] and , 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] and , Modular statically typed multimethods. Inform. Comput. 175 (2002) 76-118. | Zbl | MR
[34] , Eiffel: The Language. Prentice-Hall (1991). | Zbl | MR
[35] , Overloading vs. Object Technology. J. Object-Oriented Programming (2001) 3-7.
[36] , and , Multi-Methods in a Statically-Typed Programming Language, In Proc. ECOOP '91. Lect. Notes Comput. Sci. 512 (1991) 307-324.
[37] , , and , 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] , The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language. Addison-Wesley, Reading, Mass (1997). | Zbl
[39] , Cmm - C++ with Multimethods (2003). http://www.op59.net/cmm/readme.html.
[40] , The C++ Programming Language. Addison-Wesley, 3rd edn. (1997). | Zbl
[41] and , A syntactic approach to type soundness. Inform. Comput. 115(1) (1994) 38-94. | Zbl | MR
Cité par Sources :





