类层次结构的一个重要特性是超类、子类经及对象间的继承性,继承性避免了一些冗余信息。一个子类继承了其超类的所有性质,且这种继承具有传递性。
继承性又分为单重继承和多重继承,单重继承指每个子类有且仅有一个超类,如果子类有多个直接超类,则子类要从多个直接超类继承属性和方法,这种继承称为多重继承。
在类继承时,可能发生属性名和方法名的同名冲突问题,两类常见的冲突及其解决办法如下:
(1)各超类之间的冲突
如果在一个子类的几个直接超类中存在同名的属性和方法,一般解决方法是在子类中规定超类的优先次序(以超类出现的先后顺序),首先继承俦级最高的那个超类的属性和方法。如果需要继承多个超类的同名属性和方法,则可以通过在子类中换名的方法来解决。
(2)子类与超类之间的冲突
如果子类与其超类发生同名冲突,一般都以子类定义的为准,用子类的定义取代其超类中的同名定义。
2.6.6 持久性和版本 1)持久性
持久性是指对象的生成期超过所属程序的执行期。即当一个程序在执行过程中产生了一
19
个持久性的对象,则在程序执行结束后,此对象依然存在。
持久性程序设计为面向对象数据库、计算机辅助软件工程(CASE)等提供支持。 2)版本
由于每个对象都包含一组属性并具有相应的属性值,当为属性指定一组新值时,就建立了一个新的版本。因此,同一对象可产生多个不同的版本。
对象的版本概念为CAD/CAM、工程数据库、OODB、多媒体数据库、CASE技术提供重要支持。
2.6.7 多态、重载、重定义与动态联编 1)多态(一名多义)
类的方法有相同的接口表示,但允许有不同的多种内部实现,这种情况称为方法的多态。
2)重载(一名多用)
在类继承结构中子类继承超类的方法,这种继承往往有多态性,即子类仅继承超类的接口表示,但它用自己的实现手段,这种情况称为方法重载。
3)重定义
子类属性、方法可以替换成与超类不一致的能力称为重定义功能。便于提高属性、方法的灵活性。
4)动态联编
方法的多态性和方法重载在计算机中采用动态联编的方法来实现,即在应用程序执行到一定阶段后才与方法联编。
2.6.8 面向对象数据模型与关系数据模型的比较
下面就数据模型的三个要素(即数据结构、数据操作和数据约束条件)对这两种数据模型作一简单物比较:
, 在关系数据模型中基本数据结构是表,这相当于OO数据模型中的类(类还包括方
法);而关系中的数据元组相当于OO数据模型中的实例(实例也还包括方法)。
, 在关系数据模型中,对数据库的操作都归结为对关系的运算,而在OO数据模型中,
对类层次结构的操作分为两部分:一是封装在类内的操作即方法;二是类间相互沟
通的操作即消息。
, 在关系数据模型中有域、实体和参照完整性约束,完整性约束条件可以用逻辑公式
表示,称为完整性约束方法。在OO数据模型中这些用于约束的公式可以用方法或
消息表示,称为完整性约束消息。 本章小结:
数据模型是对现实世界进行抽象的工具,用于描述现实世界的数据、数据联系、数据语义和数据约束等的方面的内容。E-R模型是最常用的概念模型,关系模型是当前的主流模型,面向对象是今后发展的方向。
作业:
2.1 试述实体、实体集、属性和联系概念。 2.3 试述数据模型的三要素。 2.19、2.20 2.21、2.23、2.26 20
相关推荐: