面向对象思想在数据库编程方面的疑惑!请大家指点迷津!参与就有分(分不够再加)!

tiancanshi 2003-02-27 09:37:08
学Delphi时间不算长(不到一年),经常学习和专研别人在数据库编程方面的源代码,也看了一些介绍和领悟Delphi对象方面的书籍,算是入门水平吧。有关面向对象思想的书读了不少,从最初学习c++思想,到后来的面向对象系统分析与设计。只做过一些简单的MIS系统,但由于水平不高,再加上没有任何规范化软件开发的经验,总感觉做数据库程序更象是代码的简单堆砌而难以体现一种整体性、框架性的规范与设计,感觉自己做的东西缺乏技术含量。
在这我想请教大家的问题是:做数据库应用软件能否体现面向对象的思想,或者说能否用面向对象的思想去实现?如果能,怎么做才算是最恰当的??这里我主要强调的是写代码一级的,并非系统分析。
例如:一个简单的图书管理系统,从里面可以至少抽象出以下四个类:图书类、读者类、借书类、还书类;但在实现的时候,每个类的方法里面都不可避免的用到添加、删除、修改、查询等;针对添加、修改的实现,类就必须把数据库表每一个字段作为自己的域值(也为了与界面的分离),如果表中字段非常多的情况下,这样做好象也不太现实。但添加、删除、修改、查询好象在数据库领域是最普遍的,每个对象里面都要实现?怎么实现?还有其它一些和数据库交互的部分怎样在对象中体现??
我也不知道自己是不是专了死牛角尖,恳请大家帮忙指点迷津,也希望推荐一些好的作品和有关方面的书籍网站,不胜感激!!
...全文
35 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hydonlee 2003-02-27
  • 打赏
  • 举报
回复
对象, 面向对象。。。呵呵,

不要认为一说面向对象就要自己从头写一个Class...

楼主的说法。。为什么不从数据模块来继承一个类呢。。。在里边再放入连接组件,数据集组件等等。

楼主真的是钻了牛角尖!
CDSoftwareWj 2003-02-27
  • 打赏
  • 举报
回复
to anux()
我用过Bold组件,不过还是决的用ModelMaker比它强大,当然,我也只是才开始用,有好多我还不理解,总的感觉Bold在数据库开发层面上真是太强大了!!真是太强大了!!!
用Bold组件几分钟就可以写一个有主从表关系的数据库应用!!!真是受不了呀,以前我要用一两天写的东东几分钟就搞定了...哎
不过写其它的我就不知道了,有感性趣的聊聊??
anux 2003-02-27
  • 打赏
  • 举报
回复
请看:http://www.zdnet.com.cn/products/software/development/0,3800003320,39017781p,00.htm

无需编写代码,你只要把若干Bold组件加入表单并导入UML模型,就能建立起一个灵活的数据库应用程序。。。。。。
D7设计师版中还带有Bold for Delphi,可以自动实现UML模型。Bold能从ModelMaker或Rational Rose中导入数据。另外,它还有一些集成的技术有助于你完成开发任务。TeamSource能帮助你管理分布式开发。IntraWeb则把Delphi变成一个针对服务器端应用的可视化开发环境。BizSnap使创建XML Web服务变得轻而易举。WebSnap为Web应用设计提供了一个完整的平台,它还包含了对XML/XSL和脚本的支持。DataSnap则是一个非常灵活的数据库中间件解决方案,它现在完全支持Web服务。而且,流行的Rave Reports数据库也被捆绑在D7里面。

anux 2003-02-27
  • 打赏
  • 举报
回复
楼主:
你用一下Bold组件吧,D7的架构版自带了,它的作用就是由建立好的模型来自动生成面像对像的数据库程序代码,你研究一下就明白了。
myling 2003-02-27
  • 打赏
  • 举报
回复
to bluemeteor(挂月):
学习学习再学习,俺是井底之蛙
CDSoftwareWj 2003-02-27
  • 打赏
  • 举报
回复
协议类要根据 流程进行数据整理
CDSoftwareWj 2003-02-27
  • 打赏
  • 举报
回复
hehe^^

这样做有好处的...听我慢慢说来.....

图书类或读者类只管流程控制,它们不知道都有那些数据要处理,什么是有用的,它们只知道控制业务流程;
协议类呢就只管收集整理成你想要的(数据处理类能操作的数据格式),扔给数据处理类就可以了;
数据处理类,根据协议类传过来的数据格式进行分析,确定是要增加呀、删除呀、修改呀、对什么表进行修改呀等等等等....

这样你的系统划分清楚,各类工作明确,就是有变动(常有的事,你知道客户想怎么做呀hehe^^)也只是简单的重载个子类实现一个新的处理方法

这样的设计只有在大一点的公司,人员流动较大、规范一点的公司里才这么做设计的,一般我看见的小公司或不规范的公司都是在界面里写代码的,一般用户要求一有变动,动不动就要重写大部分代码,还有就是修改BUG,改了这又有那,改了改去,时间一长都不知道能不能删除那行代码了,切人员一旦走动,这人所负责的模块就要轻着重写,重着作废,例子多了。

如果你是写小项目,又是单一用户,开发人员少,针对性比较强,界面不常变动的情况下,我还是推荐你用传统的按下按钮就写代码,只要注意代码风格与注释就可以了,大可不必这样大动干割

hehe^^

一般进行面像对像设计时功能类划分好后,我就用一些UML建模工具进行辅助设计,对以后的维护有好处....

小伙子,好好练吧,你要走的路还长呢,那可真是越学越不会哦....


学习ing....
tiancanshi 2003-02-27
  • 打赏
  • 举报
回复

我很想知道做这类软件固有的、好的模式是什么?希望大家有什么好的经验及想法多多赐教!

to: CDSoftwareWj(95927)
小弟愚笨,能否再详细解释一下“数据协议类”的功能?
hjb8000 2003-02-27
  • 打赏
  • 举报
回复
做分析、编程都应该有面对对象编程的思想,现实编程可能更灵活,你应该往这方面想,但实现可能受到一些影响。。。
CDSoftwareWj 2003-02-27
  • 打赏
  • 举报
回复
你的想法是正确的,这样做应用程序的可维护性、代码量、与界面分离,会比传统的按下个按钮就写代码强多了,不过你分类就分错了.. :(

因分为图书类、读者类、数据协议类、数据操作类

借书、还书只是读者类中的事件,也只是一本图的状态

我也只是粗略分了一下数据操作类,我知道这样的话,图书类、读者类只关心业务流程就可以了,数据协议类负责对数据进行组织与整理,与数据打交道的事就交给数据操作类来处理,这样,如果有改动,也只是换一下数据操作类,修改一下数据协议

类与类之间通过固定接口实现交互


设计与编写程序本身就没有固定的模式!

具体看你对面象对像的把握能力了

hehe^^
Drate 2003-02-27
  • 打赏
  • 举报
回复
我认为,楼主应该 深一步,去看一看MTS/COM+的东东,我想这些东西对你是非常有用的!
因为它主要是让WINDOWS的程序员能够开发以组件为导向的分布式应用系统。这就是OO方法在数据库应用开发中的具体应用了
kindtoadsd 2003-02-27
  • 打赏
  • 举报
回复
我们现在是一个form一个类,我也一直想问这个问题。

to bluemeteor(挂月):
你能否给我们一个小小的例子。给我们这些钻了牛角尖的可怜的人指点迷津。
qiume 2003-02-27
  • 打赏
  • 举报
回复
各有各的好处,数据库的结构和写程序有密切关系
bluemeteor 2003-02-27
  • 打赏
  • 举报
回复
我也不知道自己是不是专了死牛角尖,恳请大家帮忙指点迷津。

——————————————————————————————————

呵呵,你确实钻了死牛角尖,现在没人这么做系统。

========================================

我们这里做ERP就是这么做的:)
bluemeteor 2003-02-27
  • 打赏
  • 举报
回复
借书类、还书类?

借和还本身应该是两个event吧。。。能当做class来看待么?

我个人认为数据库是最早开始面向对象的...楼主有兴趣可以看看oracle8或者DB2 UDB 7.*里面都有好多的OO思想,其实现在OO也是没有固定的模式,不能把自己卡死,活用对象才是OO的本质和精髓吧

先说这么点...想起来再说
myling 2003-02-27
  • 打赏
  • 举报
回复
我也不知道自己是不是专了死牛角尖,恳请大家帮忙指点迷津。

——————————————————————————————————

呵呵,你确实钻了死牛角尖,现在没人这么做系统。

rwdx 2003-02-27
  • 打赏
  • 举报
回复
gz
wlsh7879118 2003-02-27
  • 打赏
  • 举报
回复
我也很想知道!

5,385

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧