{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,1,7]],"date-time":"2023-01-07T06:27:00Z","timestamp":1673072820388},"reference-count":14,"publisher":"Association for Computing Machinery (ACM)","issue":"5","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGPLAN Not."],"published-print":{"date-parts":[[2005,5]]},"abstract":"<jats:p>The need for multimethods is preeminent in the domain of object-oriented programming. However, multimethods are far from universally acknowledged. Commonly used languages - C++, Java &amp; C# - are single dispatching languages. In this paper, we demonstrate the alternatives for multimethods in such languages. The techniques discussed, in this paper, include double dispatching (a well known technique), technique of message dispatching using RTTI (explored in detail by us in this paper), and reflection (a feature provided by some compilers). We implement these techniques for C++, Java and C# languages and discuss issues associated with encapsulating multimethods in single dispatch languages. We also compare techniques in terms of their efficiency, ease of (re)use and type safety.<\/jats:p>","DOI":"10.1145\/1071221.1071223","type":"journal-article","created":{"date-parts":[[2005,11,14]],"date-time":"2005-11-14T18:08:27Z","timestamp":1131991707000},"page":"18-27","update-policy":"http:\/\/dx.doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":5,"title":["Realization of multimethods in single dispatch object oriented languages"],"prefix":"10.1145","volume":"40","author":[{"given":"Rajeev","family":"Kumar","sequence":"first","affiliation":[{"name":"Indian Institute of Technology Kharagpur, Kharagpur, WB, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Vikram","family":"Agrawal","sequence":"additional","affiliation":[{"name":"Indian Institute of Technology Kharagpur, Kharagpur, WB, India"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Anil","family":"Mangolia","sequence":"additional","affiliation":[{"name":"Indian Institute of Technology Kharagpur, Kharagpur, WB, India"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2005,5]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/191080.191117"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/885631.885632"},{"key":"e_1_2_1_3_1","volume-title":"An introduction to object-oriented programming","author":"Budd T. A.","year":"1987","unstructured":"{Bud87} Budd , T. A. , An introduction to object-oriented programming , 2 nd Ed., Reading, MA : Addison Wesley , 1987 . Understanding Object Oriented Programming with Java, Updated Ed., Reading, MA: Addison Wesley, 2000. {Bud87} Budd, T. A., An introduction to object-oriented programming, 2nd Ed., Reading, MA: Addison Wesley, 1987. Understanding Object Oriented Programming with Java, Updated Ed., Reading, MA: Addison Wesley, 2000.","edition":"2"},{"key":"e_1_2_1_4_1","first-page":"33","volume-title":"Proc. Conf. ECOOP '92","author":"Chambers C.","year":"1992","unstructured":"{Cha92} Chambers , C. , \" Object-Oriented Multi-methods in Cecil\". In Proc. Conf. ECOOP '92 , pp. 33 -- 56 , Utrecht, the Netherlands, June\/ July 1992 . {Cha92} Chambers, C., \"Object-Oriented Multi-methods in Cecil\". In Proc. Conf. ECOOP '92, pp. 33--56, Utrecht, the Netherlands, June\/July 1992."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353181"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/74877.74910"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/178243.178478"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/28697.28732"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.5555\/851041.856938"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/351159.351174"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38821"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1016\/S0920-5489(02)00095-8"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/800017.800513"},{"key":"e_1_2_1_14_1","volume-title":"Reading","author":"Stroustrup B.","year":"1994","unstructured":"{Str94} Stroustrup , B. , \" The Design and Evolution of C++\". Reading , MA : Addison Wesley , 1994 . {Str94} Stroustrup, B., \"The Design and Evolution of C++\". Reading, MA: Addison Wesley, 1994."}],"container-title":["ACM SIGPLAN Notices"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1071221.1071223","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T16:11:25Z","timestamp":1672243885000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1071221.1071223"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2005,5]]},"references-count":14,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2005,5]]}},"alternative-id":["10.1145\/1071221.1071223"],"URL":"https:\/\/doi.org\/10.1145\/1071221.1071223","relation":{},"ISSN":["0362-1340","1558-1160"],"issn-type":[{"value":"0362-1340","type":"print"},{"value":"1558-1160","type":"electronic"}],"subject":[],"published":{"date-parts":[[2005,5]]},"assertion":[{"value":"2005-05-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}