关于面向对象的问题

 

 

摘自:http://topic.csdn.net/t/20030516/18/1794284.html

 

 

 

1.在基于DELPHI的面向对象系统中,对数据库操作应如何进行静态和动态设计?  
  不知大家有否注意到,如果完全使用面向对象形式对数据库系统进行构造,则在使用时会产生大量的对象实例,因为“一类一表”结构所对应的应该是“一记录一对象实例”,即便使用“懒对象”,如果同时操作的记录一多,其实例数量也会相当惊人,而且用此方法又如何对检索后的数据进一步检索呢(难道非得放着SQL不用,而用手工检索吗?)  
  DELPHI提供的TQUERY/TTABLE等控件是基于“一对象一表”的,但我不清楚是否真的能用这种结构进行面向对象设计,还是只能把它作为一个用于检索或生成视图的工具类?  
   
  所以我想问一下大家在DELPHI中是如何进行“面向对象”数据库系统设计的?(还是依然在使用面向过程设计?又是如何对系统中其它的“类”进行协作?我这次依然使用了面向过程方式,但没有找到从面向对象到面向过程的映射关系)  
   
  一个简单的例子:  
   
  一个组管理多个用户,一个用户只能加入一个组;一个组拥有一组资源,一个资源只属于一个组;一个组可以有多个子组,每个子组也可以有多个父组;子组的资源对父组是公开的(继承关系)。  
  系统要求的操作是:得到某个用户所能使用的所有资源。  
   
  面向对象设计的静态结构(一类一表):  
                                                +-----+  
                                            *   |           |         +--------+  
            +------+   *       1   +----+   *   |----|   组继承   |  
            |   资源   |-------|   组   |---+         +--------+  
            +------+               +----+  
                                                |   1  
                                                |   *  
                                          +------+  
                                          |   用户   |  
                                          +------+  
  面向过程(大部分管理细节由动态结构定义,也不能表现出数据库结构,但实例数少得多):  
          +--------+   1   *   +--------+   1       1   +--------------+  
          |用户管理|-----|活动用户|-------|用户可用资源集|  
          +--------+           +--------+               +--------------+  
   
  --------------------------------------------------------------------------  
   
  2.我在对一张多通道板卡进行上层包装时,注意到多数情况下,DELPHI的容器类控件会把事件指针放在子类中(也就是子类中有自己独立的事件),但如果我把它提到容器中也应是可以的(也就是多个子对象共用一个容器事件,事件参数中包含子对象引址),这样对面向对象软件设计来说只是在结构中多了一个“关联类”,但对面向过程的编程来说可以方便很多。所以我想问一下,一般大家对此类包装会更倾向于哪一种形式?为什么?   
 

 

EdwinYeah(Edwin)网友的回答:

 

其实这个topic根本的问题有两个:o/r   mapping和object   persistence。  
  国外早有成熟的理论及方案。  
   
  理论看这里:  
  1.Encapsulating   Database   Access    
  http://www.agiledata.org/essays/implementationStrategies.html  
   
  2.The   Fundamentals   of   Mapping   Objects   to   Relational   Databases  
  http://www.agiledata.org/essays/mappingObjects.html  
   
  3.The   Design   of   a   Robust   Persistence   Layer   for   Relational   Databases  
  http://objects.nease.net/persistenceLayer_ch.pdf(中文版)  
   
   
   
  delphi下成熟的方案首推由BoldSoft开发,后被Borland收购的bold   for   delphi。  
  其它的还有InstantObject,ObjectSight,   tiOPF等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值