{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,3,1]],"date-time":"2024-03-01T12:47:42Z","timestamp":1709297262130},"reference-count":20,"publisher":"Wiley","issue":"11","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4381,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1994,11]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Object\u2010oriented programming has become a widely used, important programming paradigm that is supported in many different languages. C++ has become the most widely used object\u2010oriented language and many C++ programmers are unfamiliar with the different approaches taken by other languages in the paradigm. This paper is intended as an introduction to a broad range of ideas in object\u2010oriented programming. Specifically, we introduce four modern programming languages that support object\u2010oriented programming (Oberon\u20102, Modula\u20103, Sather and Self), and show how a simple application is coded in these languages. While each of these programming languages provide support for inheritance, dynamic dispatch, code reuse, and information hiding, they do so in very different ways and with varying levels of efficiency and simplicity. The use of a simple example, based on a common programming problem, facilitates our comparison. We have coded the application in all of these languages, including C++, and we compare the compile times, object code sizes, and run times of the available implementations. Implementations of all the languages compared and all of the programs we measure are available on the Internet. Ultimately, our goal is to encourage and facilitate programmers in understanding and exploring a variety of object\u2010oriented programming languages.<\/jats:p>","DOI":"10.1002\/spe.4380241106","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T16:49:16Z","timestamp":1163782156000},"page":"1077-1095","source":"Crossref","is-referenced-by-count":7,"title":["A comparison of object\u2010oriented programming in four modern languages"],"prefix":"10.1002","volume":"24","author":[{"given":"Robert","family":"Henderson","sequence":"first","affiliation":[]},{"given":"Benjamin","family":"Zorn","sequence":"additional","affiliation":[]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","volume-title":"The C++ Programming Language","author":"Stroustrup B.","year":"1986"},{"key":"e_1_2_1_3_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380180706"},{"key":"e_1_2_1_4_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-96717-7"},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/42190.46167"},{"key":"e_1_2_1_6_2","first-page":"179","article-title":"The programming language Oberon\u20102","volume":"12","author":"Mossenbock H.","year":"1991","journal-title":"Structured Programming"},{"issue":"4","key":"e_1_2_1_7_2","first-page":"199","article-title":"Object Oberon \u2014 a modest object\u2010oriented language","volume":"10","author":"Mossenbock H.","year":"1989","journal-title":"Structured Programming"},{"key":"e_1_2_1_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/142137.142141"},{"key":"e_1_2_1_9_2","volume-title":"Modula\u20103","author":"Harbison S.","year":"1992"},{"key":"e_1_2_1_10_2","volume-title":"The Sather Language","author":"Omohundro S. M.","year":"1991"},{"key":"e_1_2_1_11_2","unstructured":"S.OmohundroandC.\u2010C.Lim \u2018The Sather language and libraries\u2019 Technical Report TR\u201092\u2013017 International Computer Science Institute Berkeley CA February1992."},{"key":"e_1_2_1_12_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF01806105"},{"key":"e_1_2_1_13_2","doi-asserted-by":"publisher","DOI":"10.1109\/52.35590"},{"issue":"4","key":"e_1_2_1_14_2","first-page":"187","article-title":"A comparison of object\u2010oriented programming languages","volume":"10","author":"Blashek G.","year":"1989","journal-title":"Structured Programming"},{"key":"e_1_2_1_15_2","unstructured":"H. W.SchmidtandS.Omohundro \u2018CLOS Eiffel and Sather: a comparison\u2019 Technical Report TR\u201091\u2013047 International Computer Science Institute Berkeley CA September1991."},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/88616.88639"},{"issue":"3","key":"e_1_2_1_17_2","doi-asserted-by":"crossref","first-page":"37","DOI":"10.1007\/BF01806107","article-title":"Organizing programs without classes","volume":"4","author":"Ungar D.","year":"1991","journal-title":"LISP and Symbolic Computation: An International Journal"},{"key":"e_1_2_1_18_2","unstructured":"U.H\u00f6lzle \u2018Personal communications\u2019 January1993."},{"key":"e_1_2_1_19_2","doi-asserted-by":"crossref","unstructured":"C.ChambersandD.Ungar \u2018Customization: optimizing compiler technology for Self a dynamically\u2010typed object\u2010oriented programming language\u2019 Proceedings of the SIGPLAN'89 Conference on Programming Language Design and Implementation Portland OR June1989 146\u2013160.","DOI":"10.1145\/74818.74831"},{"key":"e_1_2_1_20_2","unstructured":"U.H\u00f6lzle C.ChambersandD.Ungar \u2018Optimizing dynamically\u2010typed object\u2010oriented languages with polymorphic inline caches\u2019 Proceedings of the European Conference on Object\u2010Oriented Programming July1991."},{"key":"e_1_2_1_21_2","unstructured":"C.\u2010C.LimandA.Stolcke \u2018Sather language design and performance evaluation\u2019 Technical Report TR\u201091\u2013034 International Computer Science Institute Berkeley CA May1991."}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380241106","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380241106","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,24]],"date-time":"2023-10-24T03:40:30Z","timestamp":1698118830000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380241106"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1994,11]]},"references-count":20,"journal-issue":{"issue":"11","published-print":{"date-parts":[[1994,11]]}},"alternative-id":["10.1002\/spe.4380241106"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380241106","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1994,11]]}}}