{"links":{},"id":177698,"metadata":{"_oai":{"id":"oai:ipsj.ixsq.nii.ac.jp:00177698","sets":["934:935:8954:9017"]},"path":["9017"],"owner":"11","recid":"177698","title":["A Layer-based Approach to Hierarchical Dynamically-scoped Open Classes"],"pubdate":{"attribute_name":"公開日","attribute_value":"2017-02-27"},"_buckets":{"deposit":"2d932a81-6280-4a07-89dd-c68a60633dab"},"_deposit":{"id":"177698","pid":{"type":"depid","value":"177698","revision_id":0},"owners":[11],"status":"published","created_by":11},"item_title":"A Layer-based Approach to Hierarchical Dynamically-scoped Open Classes","author_link":["377893","377891","377896","377894","377892","377895"],"item_titles":{"attribute_name":"タイトル","attribute_value_mlt":[{"subitem_title":"A Layer-based Approach to Hierarchical Dynamically-scoped Open Classes"},{"subitem_title":"A Layer-based Approach to Hierarchical Dynamically-scoped Open Classes","subitem_title_language":"en"}]},"item_keyword":{"attribute_name":"キーワード","attribute_value_mlt":[{"subitem_subject":"[通常論文] open classes, extension classes, Context-oriented Programming, mixins, Ruby","subitem_subject_scheme":"Other"}]},"item_type_id":"3","publish_date":"2017-02-27","item_3_text_3":{"attribute_name":"著者所属","attribute_value_mlt":[{"subitem_text_value":"Department of Mathematical and Computing Science, Tokyo Institute of Technology"},{"subitem_text_value":"Department of Mathematical and Computing Science, Tokyo Institute of Technology"},{"subitem_text_value":"Hasso Plattner Institute, University of Potsdam"}]},"item_3_text_4":{"attribute_name":"著者所属(英)","attribute_value_mlt":[{"subitem_text_value":"Department of Mathematical and Computing Science, Tokyo Institute of Technology","subitem_text_language":"en"},{"subitem_text_value":"Department of Mathematical and Computing Science, Tokyo Institute of Technology","subitem_text_language":"en"},{"subitem_text_value":"Hasso Plattner Institute, University of Potsdam","subitem_text_language":"en"}]},"item_language":{"attribute_name":"言語","attribute_value_mlt":[{"subitem_language":"eng"}]},"item_publisher":{"attribute_name":"出版者","attribute_value_mlt":[{"subitem_publisher":"情報処理学会","subitem_publisher_language":"ja"}]},"publish_status":"0","weko_shared_id":-1,"item_file_price":{"attribute_name":"Billing file","attribute_type":"file","attribute_value_mlt":[{"url":{"url":"https://ipsj.ixsq.nii.ac.jp/record/177698/files/IPSJ-TPRO1002002.pdf","label":"IPSJ-TPRO1002002.pdf"},"date":[{"dateType":"Available","dateValue":"2019-02-27"}],"format":"application/pdf","billing":["billing_file"],"filename":"IPSJ-TPRO1002002.pdf","filesize":[{"value":"1.1 MB"}],"mimetype":"application/pdf","priceinfo":[{"tax":["include_tax"],"price":"0","billingrole":"5"},{"tax":["include_tax"],"price":"0","billingrole":"6"},{"tax":["include_tax"],"price":"0","billingrole":"15"},{"tax":["include_tax"],"price":"0","billingrole":"44"}],"accessrole":"open_date","version_id":"b217a7f8-5ed1-4b87-a4be-270e921e8af5","displaytype":"detail","licensetype":"license_note","license_note":"Copyright (c) 2017 by the Information Processing Society of Japan"}]},"item_3_creator_5":{"attribute_name":"著者名","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Matthias, Springer"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Hidehiko, Masuhara"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Robert, Hirschfeld"}],"nameIdentifiers":[{}]}]},"item_3_creator_6":{"attribute_name":"著者名(英)","attribute_type":"creator","attribute_value_mlt":[{"creatorNames":[{"creatorName":"Matthias, Springer","creatorNameLang":"en"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Hidehiko, Masuhara","creatorNameLang":"en"}],"nameIdentifiers":[{}]},{"creatorNames":[{"creatorName":"Robert, Hirschfeld","creatorNameLang":"en"}],"nameIdentifiers":[{}]}]},"item_3_source_id_9":{"attribute_name":"書誌レコードID","attribute_value_mlt":[{"subitem_source_identifier":"AA11464814","subitem_source_identifier_type":"NCID"}]},"item_resource_type":{"attribute_name":"資源タイプ","attribute_value_mlt":[{"resourceuri":"http://purl.org/coar/resource_type/c_6501","resourcetype":"journal article"}]},"item_3_source_id_11":{"attribute_name":"ISSN","attribute_value_mlt":[{"subitem_source_identifier":"1882-7802","subitem_source_identifier_type":"ISSN"}]},"item_3_description_7":{"attribute_name":"論文抄録","attribute_value_mlt":[{"subitem_description":"Open classes are frequently used in programming languages such as Ruby and Smalltalk to add or change methods of a class that is defined in the same component or in a different one. They are typically used for bug fixing, multi-dimensional separation of concerns, or to modularly add new operations to an existing class. However, they suffer from modularity issues if globally visible: Other components using the same classes are then affected by their modifications. This work presents Extension Classes, a hierarchical approach for dynamically scoping such modifications in Ruby, built on top of ideas from Context-oriented Programming (COP). Our mechanism organizes modifications in classes and allows programmers to define their scope according to a class nesting hierarchy and based on whether programmers regard an affected class as a black box or not. Moreover, Extension Classes support modularizing modifications as mixins, such that they can be reused in other components.\n------------------------------\nThis is a preprint of an article intended for publication Journal of\nInformation Processing(JIP). This preprint should not be cited. This\narticle should be cited as: Journal of Information Processing Vol.25(2017) (online)\n------------------------------","subitem_description_type":"Other"}]},"item_3_description_8":{"attribute_name":"論文抄録(英)","attribute_value_mlt":[{"subitem_description":"Open classes are frequently used in programming languages such as Ruby and Smalltalk to add or change methods of a class that is defined in the same component or in a different one. They are typically used for bug fixing, multi-dimensional separation of concerns, or to modularly add new operations to an existing class. However, they suffer from modularity issues if globally visible: Other components using the same classes are then affected by their modifications. This work presents Extension Classes, a hierarchical approach for dynamically scoping such modifications in Ruby, built on top of ideas from Context-oriented Programming (COP). Our mechanism organizes modifications in classes and allows programmers to define their scope according to a class nesting hierarchy and based on whether programmers regard an affected class as a black box or not. Moreover, Extension Classes support modularizing modifications as mixins, such that they can be reused in other components.\n------------------------------\nThis is a preprint of an article intended for publication Journal of\nInformation Processing(JIP). This preprint should not be cited. This\narticle should be cited as: Journal of Information Processing Vol.25(2017) (online)\n------------------------------","subitem_description_type":"Other"}]},"item_3_biblio_info_10":{"attribute_name":"書誌情報","attribute_value_mlt":[{"bibliographic_titles":[{"bibliographic_title":"情報処理学会論文誌プログラミング(PRO)"}],"bibliographicIssueDates":{"bibliographicIssueDate":"2017-02-27","bibliographicIssueDateType":"Issued"},"bibliographicIssueNumber":"2","bibliographicVolumeNumber":"10"}]},"relation_version_is_last":true,"weko_creator_id":"11"},"created":"2025-01-19T00:47:09.991358+00:00","updated":"2025-01-20T05:24:07.617349+00:00"}