面向对象模型的四种核心技术

时间:2024-03-12 17:17:00

1、分类

    类是具有相同属性结构和操作方法的对象的集合,属于同一类的对象具有相同的属性结构和操作方法。分类是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例”(instance-of)的关系。

    同一个类中的若干个对象,用于类中所有对象的操作都是相同的。属性结构即属性的表现形式相同,但它们具有不同的属性值。所以,在面向对象的数据库中,只需对每个类定义一组操作,供该类中的每个对象使用,而类中每一个对象的属性值要分别存储,因为每个对象的属性值是不完全相同的。例如,在面向对象的地理数据模型中,城镇建筑可分为行政区、商业区、住宅区、文化区等若干个类。以住宅区类而论,每栋住宅作为对象都有门牌号、地址、电话号码等相同的属性结构,但具体的门牌号、地址、电话号码等是各不相同的。当然,对它们的操作方法如查询等都是相同的。

2、概括

    概括是把几个类中某些具有部分公共特征的属性和操作方法抽象出来,形成一个更高层次、更具一般性的超类的过程。子类和超类用来表示概括的特征,表明它们之间的关系是“即是”(is—a)关系,子类是超类的一个特例。

    作为构成超类的子类还可以进一步分类,一个类可能是超类的子类,同时也可能是几个子类的超类。所以,概括可能有任意多层次。例如,建筑物是住宅的超类,住宅是建筑物的子类,但如果把住宅的概括延伸到城市住宅和农村住宅,则住宅又是城市住宅和农村住宅的超类。

    概括技术的采用避免了说明和存储上的大量冗余,因为住宅地址、门牌号、电话号码等是“住宅”类的实例(属性),同时也是它的超类“建筑物”的实例(属性)。当然,这需要一种能自动地从超类的属性和操作中获取子类对象的属性和操作的机制。

3、聚集

    聚集是将几个不同类的对象组合成一个更高级的复合对象的过程。术语“复合对象”用来描述更高层次的对象,“部分”或“成分”是复合对象的组成部分,“成分”与“复合对象”的关系是“部分”(parts—of)的关系,反之“复合对象”与“成分”的关系是“组成”的关系。例如,医院由医护人员、病人、门诊部、住院部、道路等聚集而成。

    每个不同属性的对象是复合对象的一个部分,它们有自己的属性数据和操作方法,这些是不能为复合对象所公用的,但复合对象可以从它们那里派生得到一些信息。复合对象有自己的属性值和操作,它只从具有不同属性的对象中提取部分属性值,且一般不继承子类对象的操作。这就是说,复合对象的操作与其成分的操作是不兼容的。

4、联合

    联合是将同一类对象中的几个具有部分相同属性值的对象组合起来,形成一个更高水平的集合对象的过程。术语“集合对象”描述由联合而构成的更高水平的对象,有联合关系的对象称为成员,“成员”与“集合对象”的关系是“成员”(member—of)的关系。

    在联合中,强调的是整个集合对象的特征,而忽略成员对象的具体细节。集合对象通过其成员对象产生集合数据结构,集合对象的操作由其成员对象的操作组成。例如,一个农场主有三个水塘,它们使用同样的养殖方法,养殖同样的水产品,由于农场主、养殖方法和养殖水产品等三个属性都相同,故可以联合成一个包含这三个属性的集合对象。

    联合与概括在概念上不同。概括是对类进行抽象概括;而联合是对属于同一类的对象进行抽象联合。联合有点类似于聚集,所以在许多文献中将联合的概念附在聚集的概念中,都使用传播工具提取对象的属性值。