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.
@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}, volume = {43}, year = {2009}, pages = {517-565}, doi = {10.1051/ita/2009008}, mrnumber = {2541130}, zbl = {1175.68094}, language = {en}, url = {http://dml.mathdoc.fr/item/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) pp. 517-565. doi : 10.1051/ita/2009008. http://gdmltest.u-ga.fr/item/ITA_2009__43_3_517_0/
[1] A Theory of Objects. Springer (1996). | MR 1418635 | Zbl 0876.68014
and ,[2] The Fortress language specification Version 1.0 (2006). Sun Microsystems, available on line.
, , , , , , and ,[3] Overloading and Inheritance. In FOOL 8 (2001).
, and ,[4] The Java Programming Language. Addison-Wesley, 3rd edition (2000). | Zbl 0876.68015
, and ,[5] Modern C++ Design, Generic Programming and Design Patterns Applied. Addison Wesley (2001).
,[6] 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 1427942
and ,[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] Double dispatch in C++. Software - Practice and Experience 36 (2006) 581-613.
, and ,[9] Common Lisp Object System Specification. Lisp and Symbolic Computation 1 (1989) 245-394.
, , , and ,[10] Building an Object-Oriented Database System, The Story of O2. edited by F. Bancilhon, C. Delobel and P. Kanellakis. Morgan Kaufmann (1992).
[11] 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 0977.68820
, and ,[12] Foundations of Object-Oriented Languages: Types and Semantics. MIT Press (2002).
,[13] A semantics of multiple inheritance. Inform. Comput. 76 (1988) 138-164. | MR 935894 | Zbl 0651.68017
,[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. | MR 1365126 | Zbl 0871.68030
,[16] Object-oriented programming: a unified foundation. Birkhauser Boston Inc., Cambridge, MA, USA (1997). | MR 1427942 | Zbl 0871.68024
,[17] 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 1233143 | Zbl 0797.68027
, and ,[18] A calculus for overloaded functions with subtyping. Inform. Comput. 117 (1995) 115-135. | MR 1318816 | Zbl 0819.03005
, and ,[19] C. Chambers and G.T. Leavens, Typechecking and modules for multimethods. ACM Trans. Program. Lang. Syst. 17 (1995) 805-843.
[20] 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).
and ,[21] 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.
, , and ,[22] On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17 (1985) 471-523.
and ,[23] The Common Lisp Object System: An Overview, In Proc. ECOOP. Lect. Notes Comput. Sci. 276 (1987) 151-170.
and ,[24] Multi-dispatch in the Java virtual machine: Design and implementation. In COOTS (2001) 77-92.
, , , and ,[25] Traits: A mechanism for fine-grained reuse. ACM Transactions on Programming Languages and Systems 28 (2006) 331-388.
, , , and ,[26] 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.
, and ,[27] Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995). | Zbl 0887.68013
, , and ,[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] Featherweight Java: a minimal core calculus for Java and GJ. ACM Trans. Program. Lang. Syst. 23 (2001) 396-450.
, and ,[30] Object-Oriented Programming in Common Lisp. Addison-Wesley (1989). | Zbl 0743.68118
,[31] Inside the C++ Object Model. Addison-Wesley (1996).
,[32] 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.
and ,[33] Modular statically typed multimethods. Inform. Comput. 175 (2002) 76-118. | MR 1905950 | Zbl 1012.68043
and ,[34] Eiffel: The Language. Prentice-Hall (1991). | MR 1185331 | Zbl 0779.68013
,[35] Overloading vs. Object Technology. J. Object-Oriented Programming (2001) 3-7.
,[36] Multi-Methods in a Statically-Typed Programming Language, In Proc. ECOOP '91. Lect. Notes Comput. Sci. 512 (1991) 307-324.
, and ,[37] Traits: Composable Units of Behavior, In Proceedings of European Conference on Object-Oriented Programming (ECOOP'03). Lect. Notes Comput. Sci. 2743 (2003) 248-274.
, , and ,[38] The Dylan Reference Manual: The Definitive Guide to the New Object-Oriented Dynamic Language. Addison-Wesley, Reading, Mass (1997). | Zbl 0900.68121
,[39] Cmm - C++ with Multimethods (2003). http://www.op59.net/cmm/readme.html.
,[40] The C++ Programming Language. Addison-Wesley, 3rd edn. (1997). | Zbl 0825.68056
,[41] A syntactic approach to type soundness. Inform. Comput. 115(1) (1994) 38-94. | MR 1303020 | Zbl 0938.68559
and ,