×

对称封装多方法的实现结构抽象。 (英语) Zbl 1284.68190号

摘要:在面向对象的语言中,方法是封装的,因此模块接口由沿组成模块的对象或类划分的方法集组成。这可以防止对应用程序的实现结构进行抽象。方法放置中的任何更改都可能导致全局影响,影响依赖于该方法的所有客户端。有时,这会过度限制软件进化的范围,尤其是对于没有明确所有者的具有多个参数的方法。我们研究了一个简单的方案,其中方法可以在其任何参数的类中定义。这使得客户机代码可以忽略方法放置的选择,因此不受更改的影响。当与多分派相结合时,此方案允许模块化扩展,其中在一个类中定义的方法可能会被在非其子类的类中所定义的方法重载。我们通过使用这些对称封装的多重方法扩展基于类的面向对象语言的核心演算来详细说明我们的建议,并证明结果是正确的。众所周知,多重调度与模块化类型检查不一致。我们还讨论了可以遵循的不同策略,以缓解类型检查问题,并提出了适用于模块检查的原始演算的变体。

MSC公司:

68号30 软件工程的数学方面(规范、验证、度量、需求等)
68甲19 其他编程范式(面向对象、顺序、并发、自动等)
60年第68季度 规范和验证(程序逻辑、模型检查等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Parnas,D.L.,《关于将系统分解为模块的标准》,Commun。ACM,第15、12、1053-1058页(1972年)
[2] Igarashi,A。;皮尔斯,B。;Wadler,P.,Featherweight Java:Java和GJ的最小核心演算,TOPLAS,23,3,396-459(2001)
[3] Bobrow,D.G。;DeMichiel,L.G。;加布里埃尔,R.P。;Keene,S.E。;Kiczales,G。;Moon,D.A.,Common Lisp对象系统规范,SIGPLAN Not。,23,SI,1-142(1988)
[4] Castagna,G.,《协方差与反方差:无原因的冲突》,ACM Trans。程序。语言系统。,17, 3, 431-447 (1995)
[5] Castagna,G.,《面向对象编程:统一基金会》,《理论计算机科学系列进展》(1997),Birkäuser:Birkáuser Boston
[7] Ernst,E.,《家族多态性》(Knudsen,J.L.,Proceedings ECOOP 2001)。ECOOP 2001年会议记录,LNCS,第2072卷(2001),Springer-Verlag:Springer-Verlag Heidelberg,德国),303-326·Zbl 0982.68637号
[8] Millstein,T。;钱伯斯,C.,模块化静态类型多方法,Inform。计算。,175, 1, 76-118 (2002) ·Zbl 1012.68043号
[9] Millstein,T。;Bleckner,C。;Chambers,C.,《分层可扩展数据类型和函数的模块化类型检查》,(ICFP'02:第七届ACM SIGPLAN功能编程国际会议论文集,ACM:ACM纽约),110-122·Zbl 1322.68044号
[10] 克利夫顿,C。;Millstein,T。;Leavens,G.T。;Chambers,C.,MultiJava:设计原理、编译器实现和应用,ACM Trans。程序。语言系统。,28, 3, 517-575 (2006)
[11] Malayeri,D。;Aldrich,J.,《集成名义和结构子类型》(Vitek,J.),《ECOOP 2008面向对象编程》(ECOOP 2008-Object-Oriented Programming),《面向对象编程,计算机科学课堂讲稿》,第5142卷(2008),斯普林格:斯普林格-柏林/海德堡),260-284
[12] Millstein,T。;弗罗斯特,C。;Ryder,J。;Warth,A.,Java的表达式和模块化谓词调度,ACM Trans。程序。语言系统。,31, 2, 1-54 (2009)
[13] 艾伦,E。;Hallett,J.J。;卢昌科,V。;Ryu,S。;盖伊,J。;Steele,L.,《具有多重继承的模块化多重分派》,(2007年美国计算机学会应用计算研讨会论文集(2007),美国计算机学会:美国纽约州纽约市美国计算机学会),1117-1121
[14] Liskov,B.,主题演讲-数据抽象和层次结构,(《面向对象编程系统、语言和应用程序汇编》附录。《面向对象编程系统、语言和应用程序汇编》附录,OOPSLA’87(1987),ACM:ACM纽约,美国纽约),17-34
[15] Pirkelbauer,P。;Solodkyy,Y。;Stroustrup,B.,开放式C++多方法,(GPCE’07:第六届生成性编程和组件工程国际会议论文集(2007),ACM:美国纽约州纽约市ACM),123-134
[16] Boyland,J。;Castagna,G.,《寄生方法:Java多方法的实现》,(OOPSLA’97:第12届ACM SIGPLAN面向对象编程、系统、语言和应用会议论文集(1997),ACM:美国纽约州纽约市ACM),66-76
[19] Chambers,C.,《Cecil中面向对象的多方法》(ECOOP’92:欧洲面向对象编程会议记录(1992),Springer-Verlag:英国伦敦Springer-Verlag),33-56
[20] Millstein,T。;雷伊,M。;Chambers,C.,Relaxed MultiJava:平衡可扩展性和模块化类型检查,(OOPSLA’03:第18届ACM SIGPLAN面向对象编程、系统、语言和应用年会论文集(2003),ACM:美国纽约州纽约市ACM),224-240
[21] Hejlsberg,A。;托格森,M。;Wiltamuth,S。;Golde,P.,《C#编程语言》(2008),Addison-Wesley Professional
[23] 贝蒂尼,L。;卡佩基,S。;Venneri,B.,具有动态和静态重载的轻量级Java,Sci。计算。程序。,74, 5-6, 261-278 (2009) ·Zbl 1183.68137号
[24] 西梅尼,F。;Lievens,D.,协变层次的匹配,(ACP4IS’09:第八届基础设施软件方面、组件和模式研讨会论文集(2009),ACM:美国纽约州纽约市ACM),13-18
[25] 哈里森·W·。;Osser,H.,《面向主体的编程:对纯对象的批判》,SIGPLAN Not。,28, 10, 411-428 (1993)
[26] Lievens,D。;沃尔什,T。;Dahlem,D。;Harrison,W.,《通过抽象实现结构促进进化》(ICSE Companion(2009),IEEE),243-246
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。