论文部分内容阅读
本文以Java语言为背景,重点讨论了类的继承和多态性的公理语义,同时也给出了必要的及相关的语言成分的公理语义。主要工作包括:(1) 给出了类的公理语义,包括类的声明、类的静态方法、构造函数的公理语义以及类的数据成员访问表达式的公理语义。(2) 给出了与对象相关的公理语义,包括对象的创建,实例方法调用的公理语义。(3) 数组也是对象,我们给出了与数组相关的公理语义,包括数组实例创建表达式和数组访问表达式的公理语义。(4) 因为类的继承和多态性是面向对象程序设计语言的一种机制,而非一种语言成分,故以不同于上述三类语言成分的方式描述它们的公理语义。随着程序设计的研究与发展,程序的正确性、可靠性、可维护性等问题受到人们的普遍关注。许多程序规范与验证的形式化方法涌现出来,对程序设计方法学的发展起了积极的推动作用。但是尽管面向对象的方法在今天的软件开发中得到广泛应用并取得显著的成就,这个领域的形式化正确证明方法仍然是-个难以解决的问题。在正确性证明中最广泛应用的方法是Hoare方法,它利用推导公式来描述程序或程序片断的输入/输出关系。对象不变式描述了面向对象数据结构中元素间的关系,在对象创建后以及方法引用前后它总为真。对象不变式在面向对象程序的证明中具有重要作用。利用对象不变式,类不变式,静态数据成员的状态和实例数据成员的状态,并结合Hoare公理系统,我们明确给出了类的公理语义。多态性是面向对象程序设计的-个重要特点,也是难点,在使用时最容易发生错误和误解。在用公理语义描述多态性的时候,由于我们使用的描述方法是静态的,而被描述对象是动态的,所以在描述多态性的时候需要做大量工作。本文通过引入新的谓词和函数确定了用公理语义描述多态性的前置条件和后置条件,从而描述了多态性的公理语义。利用我们给出的公理语义可以用于编译、解释Java程序的生成;验证用Java语言编写的程序的正确性。