精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 系统分析>>面向对象专题>>数据库系统在面向对象分析设计中的应用(

主题:数据库系统在面向对象分析设计中的应用(
发信人: 3871()
整理人: leeyg(2001-06-05 22:50:06), 站内信件

    你可以引用本文,但请注明作者,并请注明出自本论坛。
                      请大家指正。


二、数据库可以是对象属性的永久保留形式

    数据库显然是可以用来保存系统中已实例化的一些对象特征的,如属性。
但是,数据库不能直接将整个对象存贮起来(至少数据库不能直接存贮对象的
服务),也就是说,数据库不能直接作为永久对象的保留媒介。

    这是因为:对象是包括了属性与服务的整体,属性与服务是对象不可分割
的两部份。而永久对象是生存期可以跨越程序的执行时间而长期存在的对象。

    怎样处理那些不能直接永久化的部份呢(主要是服务),解决这个问题有
两个思路:

    1、 以数据库作出发点考虑

            就是说,把对象、类的那些不能直接保留在数据库中的部份(如
        服务),以数据库的概念及方法间接地保留在数据库中,从数据库中
        取出后再还原出来。
            比如:我们可以这样考虑:“联系人”的属性是一个数据库,在
        这个数据库中增加一个字段“类名”(或类编号),记录属性所属的
        类,再新建一个数据库,叫“服务库”,将每一个类的服务记录下来,

        这样,就建立了属性-方法的对应关系,每一个独立的联合记录也就
        构成了一个完整的对象。

    2、 以面向对象的眼光考虑

            数据库仅记录对象的属性,仅完成属性的增加、修改、查找、删除

        功能,至于对象中的“服务”等,不放入数据库中,而在面向对象的分

        析及设计以至最终的实现中解决。从这个意义上来说,数据库仅是永久

        对象属性的保留,而不是整个永久对象的保留。


    在仔细考虑了这两个出发点,并作了一定量的模型试验后,得出的结论是:

第二种思路是比较现实,也比较可操作的。这是因为:

    1、 第一种思路破坏了面向对象概念的完整性,那些保留在数据库中间接部

        份及其转换的过程在面向对象的分析及设计时又如何建模呢?
        而第二种思路不仅保留了面向对象概念的完整,而且非常清晰。

    2、 第一种思路无论是在设计上还是在实现上,都存在很大的复杂性,而第

        二种思路实现起来非常容易,目前绝大多数的OO语言都支持。

    3、 从充分发挥数据库与面向对象语言的长处来看,第二种思路显然是最合

        适的。

    基于第二种思路,将数据库与对象的属性联系起来必须解决从对象到数据库

的存贮,及从数据库到对象的恢复两个方法,这两个方法可以这样解决:

    1、 从对象到数据库的存贮。
            对象属性的改变方式可以划分为种,一是录入性的改变,如增加、

        修改一个联系人,二是程序触发性的,如开关的“开”“关”状态,
        无论哪种方式,都必须把这个改变永久性地记录到数据库中。
            对于录入性的改变,直接设计一个录入画面并将录入的属性存盘即

        可。
            对于程序触发性的属性改变,在这些属性所在的类模型(类)中设

        计改变这些属性的服务。如记录开关状态的State属性,可在开关的模型

        中设计ChangeState 的服务,调用 ChangeState服务时,除立即修改内

        存中State 属性的状态外,还要查找这一开关对象在数据库中的记录,

        更新该记录。

    2、 从数据库到对象的恢复。
            这就要用到前面所提出的“取出”函数。在永久属性所在的模型中

        设计“取出”服务,该服务首先根据属性所在的类,实例化出一个空对

        象(所有属性值均为初始值的对象),再根据取出的条件,从数据库中

        取出符合条件的对象的属性值,将这些具体的属性值赋予该实例的对应

        属性,最终返回这一具有实际意义的对象实体。
           注意,当“取出”服务根据属性所在的类,实例化出一个对象时,

        这个空对象已经具有了该类所有的一切服务。


待续......
下一节介绍我怎样在数据库中体现类的继承关系。




--
※ 修改:.3871 于 Sep 24 13:10:43 修改本文.[FROM: 202.96.190.124]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.190.124]

[关闭][返回]