对象模型中的父子关系种类

来源:互联网 发布:ubuntu gcc 版本 编辑:程序博客网 时间:2024/06/07 02:34

我们在面向对象模型设计的时候,父子关系,parent-child relationship,是经常涉及到的。类之间有父子关系,对象也有父子关系。

所谓父子关系,一般是指Inheritance Relationship,或者是Container-contained Relationship,共有4中父子关系。

类:

1)继承关系,面向对象语言都有,体现的是属性、行为和事件的继承。例如人类继承动物类,动物类继承生物类。

2)包含关系,具体建模的时候经常碰到,例如汽车类包含轮子类、车架类、电子系统类等,通信设备上的cabinet包含rack,rack包含slot,board等,这个关系在建模的时候一般需要通过metadata进行管理。

对象:

1)继承关系,对象的继承关系在现实中很多,就是你和你爸妈的关系。面向对象语言,例如java和c#,现在好像还没有办法很好的对此进行建模,tom和jack两个对象,都是Human这个类的实例化对象,但jack继承自tom,jack是儿子,tom是爸爸,但tom也是儿子。对于现有的面向对象语言,建模阶段无法进行描述,完全是实例化阶段的一个关系。

     结合javascript语言的原型链,prototype。任意对象有constructor,constructor有prototype对象,prototype对象又有constructor,不断进行,直到自循环。

    function tomborn(){}

  tomborn.prototype = tom; //tom这个对象怎么来的呢?还有个老tom

  jack = new tomborn();

  只要是tomborn生产出来的对象,都是tom的儿子。

2)包含关系,对象包含关系式类包含关系的一个实例化,类实例化的结果是对象,而类关系的实例化就是对象关系(关系的描述有两种:属性和关系类,无论哪一种,关系实例化即是属性或者关系类的实例化)。