哪位用Delphi实现了真正的面向对象设计?(100分)

  • 主题发起人 主题发起人 jnan
  • 开始时间 开始时间
我想,面向对象的思想应该体现在分析与设计的层面上,而不是在实现层面上。
最本质的东西应该是"类",DLL只是众多表现形式中的一种表现手段,只是形式
的封装,"类"才是更高层次上的封装。
 
面向对象只是思想,你的要求太注重形式了。用我很浅很浅的理解你3句话是这样的。
1 对象位于独立模块中,方便在运行期和编译期更换相应模块。
2 对象间并不过度依赖,有一定独立性,任何符合一定条件的对象方便组合。
3 对象封装完美,不存在与该对象相关的数据,找不到处理过程。
 
两位说得有道理,我是想讨论delphi在实现面向对象的细节,也就是比封装类级别更低一些,
代码级别的方法。
而testnet的第三点:
对象封装完美,不存在与该对象相关的数据,找不到处理过程。
我想我还没有完全作到,我的系统使用了数据库。
 
可以完成就可以了!
 
现实世界的对象模型非常复杂,现在还没有哪一
种语言能完美的描述它们和其间的关系。
另外现在对对象的属性和方法的访问控制一般都是在编译的时候进行检查,如果违反
(如在类外访问它的private属性或方法)给出编译错误,实际上在二进制代码中是没有
任何限制的.com实现了二进制级的对象,但访问它明显慢一些。
所以我认为世界上没有十全十美的事,只要具体问题具体分析,完成任务就行了.
 
com是一种方法,但是我觉得没有必要一定要使用com,并且接口并非只能在com中使用,任何
类都可以使用它来定义它的操作规范。而对于dll封装类,也是可以的。这就是我的实现方法,
不知道有没有错误的地方,或者我对面向对象是否有理解上的偏差。
 
有两类人是从对象的思想中得不到益处的,
一类是对对象知道的太少,不能领会其精髓,
另一类是知道的太多却误入歧途。
 
我想问这么一个问题:
我有一个类TMainControl(基于TCustomControl),它的一个属性(Data)是另一个类(TData,基于TObject),
而TData又是一个树形结构的东东,也就是说它又有一个和它一样类型的属性,并且TData以许多自己的
成员方法(公有的和私有的),我想把TMainControl转换成OCX,但是很明显Data属性是不可以很简单的转换过去了,
有人告诉我需要把TData的成员方法转到TMainControl中来实现,但是那样就会失去TData的树形结构的意义,
比如我要添加一个结点,只能在参数中传入父结点的ID和子结点的所有数据,如果父结点不仅仅是通过ID来确定,
或者子结点的数据很多,或者子结点本身就是一棵子树,又不很多分枝,那就无法用简单类型的数据来描述.
现在有没有什么办法能把TData这个类也转过去,并仍然作为树形结构来处理.
 
在typelib 中加入一个新的类和接口。就可以发布多个类在一个ocx中
 
to jnan:
jack_4826@sina.com
 
用DLL封装对象,从技术上来说是可行的,
关键是设计思路,实现上也会有点小麻烦,
(我用 com 封装 FastReport 时就遇到不少)
调用我觉得可能也会比较复杂。

我赞成用 com 封装功能模块,我做了一个数据库应用程序框架(Framework),
封装了常见的用户登录、用户管理、菜单设计、代码维护、报表设计管理等功能,
用它做了近十来个不大不小的系统,感觉方便省心,开发效率有很大的提高。
同时我还有好几个好用的 基类 Form, 开发档案台账式的数据库应用(指如
类似人员档案、设备台账等简单的数据表增删改、打印)很容易。

本来准备拿来卖的,但应者寥寥;如我的程序员生涯不顺,或不打算用delphi了,
我准备公开出来,希望能帮助大家提高开发效率,至少不会让有人觉得用 delphi
数据库开发效率不如 PB。

仅供大家参考,可能和主题有误差
Email: koyochen@sina.com
 
软件是用来解决问题的,不是用来卖弄技巧的![8D]
 
同意张无忌!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部