delphi面向对象编程的思考与困惑,难难难(300分)

  • 主题发起人 主题发起人 polisnew
  • 开始时间 开始时间
收藏不了,
只能标记一下。
 
to mypine:
这里有我的一个方案,希望能得到你的指点....
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=1951482
 
to barton:
我认为数据感知控件和TDATSET的抽象结合正是VCL中的最大亮点之一,否则VCL在数据库编写方面就会象MFC一样了.
在面向对象设计方面,我想可以考虑这样的思路:
表结构就是类,而表中的记录就是对象,存储过程是方法,触发器类似事件,我想这样一比较大家就会发现数据库表的设计也就是类设计,所以才会出现JAVA的JDO(JAVA DATA OBJECT)概念.
代码重用主要体现在通用类的抽象,这里的通用类指的是业务逻辑,比如用户/客户/权限/模块/报表等,以上列举的类都是每个应用系统都必须要实现的部分,在基础上都是一样的,所以完全可以抽象出来,那么在绝大多数系统中都可以使用,但是抽象时候只能抽象到与具体应用系统无关的部分.
举个例子,对于权限设计,我一般是先定义一个抽象类权限,然后再继承出模块权限/报表权限/资源权限等,所以对应到数据库就是权限表,然后是模块权限表/报表权限表/资源权限表,以上子类的主键和父类的主键是关联外键对应于数据库,这就是类化的数据库设计,便于扩充,比如你要想扩充一种权限控制,增加一个表就可以了,也就是增加一个类.
而客户和用户的抽象可以这么做,先定义一个自然人类和一个社会实体类,客户指的是商业客户,即可能是人也可能是社会实体,因此客户会有一个客户ID,另外再加两个外键对应于自然人和社会实体,在触发器里定义互斥限制,在客户是自然人时就不能是社会实体,是社会实体时就不能是自然人.而自然人这个类又可以用到用户类里,因为用户是相对于应用系统的使用者而言的,也就是一定对应于一个自然人,这样在用户里定义自然人只需要关联到自然人类,这就是重用,包括对自然人的编辑也可以直接重用,也就是代码重用.
上面讲的是类抽象继承,没有牵涉到接口,接口的设计也可以体现在数据库中,比较复杂就不赘述了.
 
to mypine,你的framework有没有进展?拿出来看看呀,那可是艰巨的工作呀[8D]
to all:
O/R Mapping 基础概念入门
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(中文版)
 
留着慢慢看。
 
后退
顶部