{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,9]],"date-time":"2026-01-09T14:35:57Z","timestamp":1767969357084,"version":"3.49.0"},"reference-count":30,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2023,4,6]],"date-time":"2023-04-06T00:00:00Z","timestamp":1680739200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by-nc-sa\/4.0\/"}],"funder":[{"name":"Beijing Natural Science Foundation","award":["4192036"],"award-info":[{"award-number":["4192036"]}]},{"DOI":"10.13039\/501100012166","name":"National Key Research and Development Program of China","doi-asserted-by":"publisher","award":["2021ZD0110202"],"award-info":[{"award-number":["2021ZD0110202"]}],"id":[{"id":"10.13039\/501100012166","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2023,4,6]]},"abstract":"<jats:p>Many bidirectional programming languages, which are mainly functional and relational, have been designed to support writing programs that run in both forward and backward directions. Nevertheless, there is little study on the bidirectionalization of object-oriented languages that are more popular in practice. This paper presents the first bidirectional object-oriented language that supports programmatic and direct manipulation of objects. Specifically, we carefully extend a core object-oriented language, which has a standard forward evaluation semantics, with backward updating semantics for class inheritance hierarchies and references. We formally prove that the bidirectional evaluation semantics satisfies the round-tripping properties if the output is altered consistently. To validate the utility of our approach, we have developed a tool called BiOOP for generating HTML documents through bidirectional GUI design. We evaluate the expressiveness and effectiveness of BiOOP for HTML webpage development by reproducing ten classic object-oriented applications from a Java Swing tutorial and one large project from GitHub. The experimental results show the response time of direct manipulation programming on object-oriented programs that produce HTML webpages is acceptable for developers.<\/jats:p>","DOI":"10.1145\/3586035","type":"journal-article","created":{"date-parts":[[2023,4,6]],"date-time":"2023-04-06T21:06:02Z","timestamp":1680815162000},"page":"230-255","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects"],"prefix":"10.1145","volume":"7","author":[{"ORCID":"https:\/\/orcid.org\/0009-0008-2565-7769","authenticated-orcid":false,"given":"Xing","family":"Zhang","sequence":"first","affiliation":[{"name":"Peking University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0007-0690-2119","authenticated-orcid":false,"given":"Guanchen","family":"Guo","sequence":"additional","affiliation":[{"name":"Peking University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3000-0795","authenticated-orcid":false,"given":"Xiao","family":"He","sequence":"additional","affiliation":[{"name":"University of Science and Technology Beijing, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9034-205X","authenticated-orcid":false,"given":"Zhenjiang","family":"Hu","sequence":"additional","affiliation":[{"name":"Peking University, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2023,4,6]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/74334.74347"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1863543.1863572"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328438.1328487"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1142351.1142399"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2889160.2889210"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/2908080.2908103"},{"key":"e_1_2_1_7_1","unstructured":"Robert Eckstein Marc Loy and Dave Wood. 1998. Java Swing. O\u2019Reilly & Associates Inc. USA. isbn:156592455X \t\t\t\t  Robert Eckstein Marc Loy and Dave Wood. 1998. Java Swing. O\u2019Reilly & Associates Inc. USA. isbn:156592455X"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1232420.1232424"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-32202-0_1"},{"key":"e_1_2_1_10_1","unstructured":"Ben Fry Casey Reas Andres Colubri Elie Zananiri Samuel Pottinger and Dan Shiffman. 2001. Processing. https:\/\/processing.org\/ \t\t\t\t  Ben Fry Casey Reas Andres Colubri Elie Zananiri Samuel Pottinger and Dan Shiffman. 2001. Processing. https:\/\/processing.org\/"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2559206.2581138"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3236024.3236070"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1007\/s11432-020-3276-5"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2984511.2984575"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3332165.3347925"},{"key":"e_1_2_1_16_1","unstructured":"Mi\u0161ko Hevery and Adam Abrons. 2010. Angular. https:\/\/angular.io\/ \t\t\t\t  Mi\u0161ko Hevery and Adam Abrons. 2010. Angular. https:\/\/angular.io\/"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1932681.1863573"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1014007.1014025"},{"key":"e_1_2_1_19_1","unstructured":"JFormDesigner. 2003. Eclipse IntelliJ IDEA NetBeans and JDeveloper. https:\/\/www.formdev.com\/jformdesigner\/ \t\t\t\t  JFormDesigner. 2003. Eclipse IntelliJ IDEA NetBeans and JDeveloper. https:\/\/www.formdev.com\/jformdesigner\/"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1160074.1159830"},{"key":"e_1_2_1_21_1","volume-title":"Morphic: The Self User Interface Framework.","author":"Maloney John","year":"1995","unstructured":"John Maloney . 1995 . Morphic: The Self User Interface Framework. Mountain View, CA 94043 USA. https:\/\/ftp.squeak.org\/docs\/Self-4.0-UI-Framework.pdf John Maloney. 1995. Morphic: The Self User Interface Framework. Mountain View, CA 94043 USA. https:\/\/ftp.squeak.org\/docs\/Self-4.0-UI-Framework.pdf"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/3276497"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1109\/WSE.2008.4655395"},{"key":"e_1_2_1_24_1","unstructured":"Haavard Nord and Eirik Chambe-Eng. 1995. Qt Creator. https:\/\/www.qt.io\/product\/development-tools \t\t\t\t  Haavard Nord and Eirik Chambe-Eng. 1995. Qt Creator. https:\/\/www.qt.io\/product\/development-tools"},{"key":"e_1_2_1_25_1","volume-title":"Types and Programming Languages","author":"Pierce Benjamin C.","year":"2091","unstructured":"Benjamin C. Pierce . 2002. Types and Programming Languages ( 1 st ed.). The MIT Press . isbn:026216 2091 Benjamin C. Pierce. 2002. Types and Programming Languages (1st ed.). The MIT Press. isbn:0262162091","edition":"1"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.14279\/tuj.eceasst.57.879.869"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38828"},{"key":"e_1_2_1_28_1","unstructured":"Visualiser. 2004. Eclipse. http:\/\/www.eclipse.org\/ajdt\/visualiser\/ \t\t\t\t  Visualiser. 2004. Eclipse. http:\/\/www.eclipse.org\/ajdt\/visualiser\/"},{"key":"e_1_2_1_29_1","unstructured":"Evan You. 2014. Vue.js. https:\/\/vuejs.org\/ \t\t\t\t  Evan You. 2014. Vue.js. https:\/\/vuejs.org\/"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.7698353"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3586035","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3586035","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T16:46:10Z","timestamp":1750178770000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3586035"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,4,6]]},"references-count":30,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2023,4,6]]}},"alternative-id":["10.1145\/3586035"],"URL":"https:\/\/doi.org\/10.1145\/3586035","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,4,6]]},"assertion":[{"value":"2023-04-06","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}