×

针对多重继承的具有惰性行为子类型的增量推理。 (英语) Zbl 1221.68058号

概要:面向对象支持代码重用和增量编程。多重继承增加了代码重用的可能性,但使方法调用的绑定变得复杂,从而使程序分析变得复杂。行为子类型允许在开放世界假设下进行程序分析;即,假设类层次结构是可扩展的。然而,方法重新定义受到行为子类型的严格限制,多重继承可能会导致独立设计的超类的限制冲突。
本文提出了一种在开放世界假设下对多重继承进行增量推理的更自由的方法。该方法基于懒惰行为子类型,非常适合多重继承,因为它对新的子类增量地施加上下文相关的行为约束。我们首先介绍了一种简单语言的方法,并展示了如何将增量推理与灵活的代码重用相结合。然后用独立于类层次结构的接口类型层次结构对该语言进行扩展。在这种情况下,灵活的代码重用可以与关于外部调用的模块化推理相结合,即每个类只分析一次。我们将这种方法形式化为一种演算,并展示了这两种语言的合理性。

MSC公司:

68甲19 其他编程范式(面向对象、顺序、并发、自动等)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] America,P.:《使用行为子类型设计面向对象编程语言》,《面向对象语言基础》,60-90(1991)
[2] 美国,P。;Van Der Linden,F.:具有继承和子类型的并行面向对象语言,面向对象编程系统、语言和应用会议论文集,OOPSLA,第25(10)25卷,161-168(1990)
[3] Apt,K.R.:《霍尔逻辑的十年:一项调查——第一部分,编程语言和系统的ACM事务3》,第4期,第431-483页(1981年)·Zbl 0471.68006号
[4] Apt,K.R。;De Boer,F.S。;Olderog,E.-R.:顺序和并发系统的验证(2009)·Zbl 1183.68361号
[5] 阿塔利,I。;Caromel,D。;Ehmety,S.O.:埃菲尔动态绑定的自然语义,编程语言和系统上的ACM事务18,第6期,711-729(1996)
[6] 布希,G。;伦博,J。;雅各布森,I.:《统一建模语言用户指南》(1999)
[7] 布拉查,G。;Cook,W.:基于Mixin的继承,面向对象编程会议论文集:系统、语言和应用程序/面向对象编程欧洲会议,303-311(1990)
[8] 伯迪,L。;Cheon,Y。;科克·D·R。;恩斯特,医学博士。;Kiniry,J.R。;Leavens,G.T。;Leino,K.R.M。;Poll,E.:《JML工具和应用概述》,《国际技术转让软件工具杂志》第7期,第3期,第212-232页(2005年)
[9] Cardelli,L.:多重继承的语义,信息与计算76,第2–3期,138-164(1988)·Zbl 0651.68017号 ·doi:10.1016/0890-5401(88)90007-7
[10] 钱伯斯,C。;Ungar,D。;Chang,B.-W。;Hölzle,U。:父对象是对象的共享部分:SELF、Lisp和符号计算中的继承和封装4,No.3,207-222(1991)
[11] Chin,西-北。;大卫·C。;Nguyen,H.H。;Qin,S.:使用分离逻辑增强模块化oo验证,87-99(2008)·Zbl 1295.68082号
[12] De Boer,F.S.:面向对象的WP演算,计算机科学课堂讲稿1578135-149(1999)
[13] Demichiel,L.G。;Gabriel,R.P.:通用lisp对象系统:概述,计算机科学讲义276151-170(1987)
[14] 多夫兰,J。;约翰森,E.B。;Owe,O.:《动态系统的可观察行为:并发对象的组件推理》,《理论计算机科学电子笔记》203,第3期,第19-34页(2008)·Zbl 1277.68056号
[15] 多夫兰,J。;约翰森,E.B。;Owe,O。;Steffen,M.:懒惰行为子类型,计算机科学讲义501452-67(2008)·兹比尔1204.68072
[16] 多夫兰,J。;约翰森,E.B。;Owe,O。;Steffen,M.:多重继承的增量推理,计算机科学讲义5423215-230(2009)·Zbl 1211.68084号 ·doi:10.1007/978-3642-00255-7_15
[17] 多夫兰,J。;约翰森,E.B。;Owe,O。;Steffen,M.:Lazy behavior subtyping,《逻辑与代数编程杂志》79,第7期,578-607(2010)·兹比尔1204.68072 ·doi:10.1016/j.jlap.2010.07.008
[18] Fournet,C。;Laneve,C。;Maranget,L。;Rémy,D.:连接演算中的继承,《逻辑与代数编程杂志》57,第1-2期,23-69(2003)·Zbl 1035.03011号 ·doi:10.1016/S1567-8326(03)00040-7
[19] Hoare,C.A.R.:计算机编程的公理基础,ACM通信12,576-580(1969)·Zbl 0179.23105号 ·doi:10.1145/363235.363259
[20] Hoare,C.A.R.:程序和参数:公理化方法,数学课堂讲稿188102-116(1971)·Zbl 0221.68020号
[21] Igarashi,A。;皮尔斯,公元前。;Wadler,P.:Featherweight Java:Java和GJ的最小核心演算,ACM编程语言和系统事务23,第3期,396-450(2001)
[22] 约翰森,E.B。;Owe,O.:多继承和异步通信对象的动态绑定策略,计算机科学讲义3657,274-295(2005)·Zbl 1143.68356号 ·数字对象标识代码:10.1007/11561163
[23] 约翰森,E.B。;Owe,O。;Yu,I.C.:《Creol:分布式并发系统的类型安全面向对象模型》,《理论计算机科学365》,第1-2期,23-66页(2006)·兹比尔1118.68031 ·doi:10.1016/j.tcs.2006.07.031
[24] Krogdahl,S.:相似语言中的多重继承,第25位,第2期,318-326(1985)·兹伯利0566.68005 ·doi:10.1007/BF01934377
[25] G.T.Leavens,D.A.Naumann,《行为子类型化、规范继承和模块化推理》,《技术报告06-20a》,爱荷华州艾姆斯爱荷华州立大学计算机科学系,2006年。
[26] X.Leroy,D.Doligez,J.Garrigue,D.Rémy,J.Vouillon,《目标凸轮系统》(3.11版)。文档和用户手册,国家信息与自动化研究所,2008年。
[27] Liskov,B.H。;Wing,J.M.:子类型的行为概念,编程语言和系统上的ACM事务16,第6期,1811-1841(1994)
[28] 罗,C。;Qin,S.:多重继承的分离逻辑,理论计算机科学电子笔记212,27-40(2008)·Zbl 1286.68320号
[29] Meyer,B.:面向对象的软件构造(1997)·Zbl 0987.68516号
[30] Nystrom,N。;Chong,S。;Meyers,A.C.:通过嵌套继承实现可扩展性,(2004)
[31] Odersky,M。;勺子,L。;Venners,B.:《scala编程》(2008)
[32] Owicki,S。;Gries,D.:并行程序的公理化证明技术I,信息学报6,第4期,319-340(1976)·Zbl 0312.68011号 ·doi:10.1007/BF00268134
[33] 帕金森,M.J。;Biermann,G.M.:分离逻辑、抽象和继承,75-86(2008)·Zbl 1295.68091号
[34] Pierik,C。;De Boer,F.S.:面向对象编程的证明大纲逻辑,《理论计算机科学》343,第3期,413-442(2005)·Zbl 1077.68018号 ·doi:10.1016/j.tcs.2005.06.018
[35] Poetzsch-Heffter,A。;Müller,P.:顺序Java的编程逻辑,计算机科学讲义1576162-176(1999)
[36] Jr,J.G.Rossie;弗里德曼,D.P。;Wand,M.:基于子对象的继承建模,计算机科学课堂讲稿1098248-274(1996)
[37] Soundarajan,N。;Fridella,S.:《继承:从代码重用到推理重用》,IEEE计算机社会出版社,206-215(1998)
[38] Stroustrup,B.:C++的多重继承,《计算系统2》,第4期,367-395(1989)
[39] Ungar,D。;Smith,R.B.:《自我:简单的力量,Lisp和符号计算》4,第3期,187-206(1991)
[40] Wasserrab,D。;Nipkow,T。;斯内尔廷,G。;Tip,F.:C++中多重继承的操作语义和类型安全证明,面向对象编程、系统、语言和应用程序会议论文集,345-362(2006)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。