CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  非技术区

谈论面向对象设计

楼主chenminghong(cmh)2005-05-11 16:40:43 在 Delphi / 非技术区 提问

我看了刘艺的<面向对象思想>这本书.  
  可是我还是不知道要怎样运用到数据库系统当中去.  
  一直感觉每个表就是一个类吗?  
  所以望高手指点. 问题点数:50、回复次数:55Top

1 楼yeeyee(我要换工作!)回复于 2005-05-11 16:48:24 得分 1

1  
   
  有空看看他那本设计模式,  
   
  你会觉得写几个类,真太爽了。  
   
  代码的重用,设计的重用。  
   
  RAD   与   OOP   是相对立的Top

2 楼chenminghong(cmh)回复于 2005-05-11 16:59:35 得分 0

<设计模式>我刚买,过几天可能就到货.一定抽空看一下.我也买了李唯的那本新书,不知道怎样.  
  我现在对面向对象还是很薄弱.  
  我公司一个人说:窗体继承就是面向对象设计了.可是我认为.窗体继承是面向对象.可是真正面向对象应该没有那么简单吧.应该把每个业务都写成类.这样应该算面向对象吧Top

3 楼phaler(笑传醉梦)回复于 2005-05-11 17:01:03 得分 1

一个表对应一个类.那是OR/Map    
  面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.  
  平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了Top

4 楼chijingde(AD)回复于 2005-05-11 17:03:20 得分 1

如果一个表就是一个类的话  
   
  那你的表一变  
   
  类不就全废了?Top

5 楼phaler(笑传醉梦)回复于 2005-05-11 17:03:48 得分 2

窗体继承,只是用到了面向对象中的一个特性.即子类继承了父类的全部特性.以致于你在更改基类社会窗体时子类窗体都会发生变化.这也是为了好维护.具体的面向对象.因个人理解不同.设计出的结构也很大不同.MIS系统方面.有不少成熟的框架,可以借鉴一下.详细的.要看具体的业务流程了.不能一概而论吧...Top

6 楼chenminghong(cmh)回复于 2005-05-11 17:12:26 得分 0

MIS系统方面.有不少成熟的框架,可以借鉴一下  
   
  phaler(笑传醉梦):哪里有,能不能提供一下.谢谢.  
   
  只是为了解决代码重用.方法维护.  
   
  这样我写个公共模块,写个公共函数.不也可以吗?  
  Top

7 楼phaler(笑传醉梦)回复于 2005-05-11 17:25:40 得分 2

面向对象的三个特色,封装,继承,多态.  
  封装是为了把数据和访问方法分离.达到对数据的隔离保护.  
  继承和多态的运用才能达到代码重用.也是最需要技巧的地方.  
   
  面向对象编程和过程编程的优缺点,就不要多讨论了吧...Top

8 楼wuqvei(▇▇▇coder没tear▇▇▇)回复于 2005-05-11 17:35:43 得分 1

很大范围的问题   谈起来有点空Top

9 楼chenminghong(cmh)回复于 2005-05-12 10:38:11 得分 0

这些理论我好象都懂,可是就用不进去.  
  谁有这种例子,可以借我参考一下吗?Top

10 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2005-05-12 11:08:33 得分 1

买李维那本新书吧,<<面向对象实践>>  
  虽然没多说数据库的,才也是相关的Top

11 楼chenminghong(cmh)回复于 2005-05-12 14:40:11 得分 0

,<<面向对象实践>>过几天就到货了,正准备看  
  里面不知有没有实际的例子Top

12 楼yeeyee(我要换工作!)回复于 2005-05-12 14:49:01 得分 1

楼主真款,  
  一下在买了这么多的书。  
  羡慕ing。  
  不过买书,我也用了   1   K   多了。  
   
  Delphi   模式编程,里面的例子用得上的。Top

13 楼chenminghong(cmh)回复于 2005-05-12 15:34:47 得分 0

yeeyee(易   一   想找   M*M)   (   )   :  
  你都用了1K了  
  我才用200多  
  不过要学知识,这些钱发的值.  
  我也是挤出来的.没有办法.Top

14 楼onemonth(CSDN真烦)回复于 2005-05-12 16:18:09 得分 1

oo是很简单的东西,一句话就概括了:一个对象表达一个概念。Top

15 楼chenminghong(cmh)回复于 2005-05-12 16:55:56 得分 0

对概念我是知道的,可是对实际应用我还是不太清楚Top

16 楼julong88((无锋之刃))回复于 2005-05-13 08:28:02 得分 1

感觉刘的那本书不是很好  
   
  还没有我在c#高级编程的附录里看的过瘾Top

17 楼web700(*FS*的小狗腿子)回复于 2005-05-13 08:42:02 得分 1

书非借不能读,大部分都是.   我也是.Top

18 楼ihihonline(潇潇->戒烟)回复于 2005-05-13 09:01:24 得分 1

严重同意  
   
    phaler(笑传醉梦)   (   )   信誉:100     2005-5-11   17:01:04     得分:   0      
     
     
         
  一个表对应一个类.那是OR/Map    
  面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.  
  平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了  
   
       
     
   
  都什么时候了,delphi落伍了Top

19 楼chenminghong(cmh)回复于 2005-05-13 09:58:16 得分 0

都什么时候了,delphi落伍了  
   
   
  那现在什么算没有落伍.  
  语言每个都会落伍的  
  就是思想不会落伍.面向对象设计方法不会落伍.  
  所以要加快学.可是还是不明白.  
  只有等<设计模式>和<对象实践>书到了,再学.  
  Top

20 楼fj218(双元)回复于 2005-05-13 17:26:11 得分 1

思想不会落伍.面向对象设计方法不会落伍.  
  Top

21 楼chenminghong(cmh)回复于 2005-05-13 19:10:13 得分 0

大家多进来谈论  
  分不够在放Top

22 楼liubcb(萧萧)回复于 2005-05-13 19:31:40 得分 1

谁看到一阵黑风过后,  
  昏黄的北方一声长啸:  
      “我终于彻底的面向对象了!!”  
  随后一个类似足球场裸奔的姿势,  
  树上的乌鸦吓走了一片。  
          -------题记面向对象之路  
   
  他曾在深夜里思索很久,  
  窗帘上天伦叙乐的字迹已经模糊,  
  他曾在在篮球场上拼命奔波,  
  球场留下一串串类的喝声;  
   
  他去耕田,田野里片片青绿被他涂上字段;  
  他去飞行,高空中朵朵白云被他封装成圆;  
  他去旅游,山川上圈点下接口无数;  
  他去潜水,海底下描绘了深刻的属性万千;  
   
  一天他累了坐在草地上沉睡,  
  阳光静静的搭在双肩,  
  梦里禽兽终于从一条狗里脱颖而出,  
  他沉默的眼睛闪过一丝光线!  
   
  谁看到一阵黑风过后,  
  昏黄的北方一声长啸:  
      “我终于彻底的面向对象了!!”  
  随后一个类似足球场裸奔的姿势,  
  树上的乌鸦吓走了一片。  
  Top

23 楼g961681(技术庸人(情商太低))回复于 2005-05-13 20:00:44 得分 1

等待<<面向对象实践>>ing....................Top

24 楼delphfan(A_MU)回复于 2005-05-14 02:56:29 得分 1

我看了李维的那本,PFM的实例,感觉还是把握不住设计需要到什么样的深度Top

25 楼DebugXP(NULL)回复于 2005-05-14 04:56:55 得分 1

你说ORM??Top

26 楼DebugXP(NULL)回复于 2005-05-14 04:58:17 得分 1

还是看PEAA好了。Top

27 楼chenminghong(cmh)回复于 2005-05-14 08:20:40 得分 0

PEAA:是什么东西Top

28 楼jasengod2003(孤单的我飞得好累!!!)回复于 2005-05-14 14:49:00 得分 1

向大家推荐一本好書,  
  <<delphi高手突破>>  
  感覺還不錯,著重講面向對象這部分.Top

29 楼liangyu8281(丁丁)回复于 2005-05-14 16:27:11 得分 1

关系数据库以二维表来表示数据实体及其相互关系,是现在大多数商用  
  关系型数据库所采用的。传统的关系数据库缺乏对于多媒体数据的有力支持,但是  
  可以通过适当的手段进行扩展后用于多媒体数据的建模。  
        面向对象数据库的基本思想是将代码和数据封装在一个称为“对象”的单元内,  
  封装在对象内部的代码定义了作用于内部数据之上的操作,对象与系统其他部分之间的  
  接口以一组消息来定义。Top

30 楼liangyu8281(丁丁)回复于 2005-05-14 16:29:01 得分 8

所谓OOP,指的是一种编程方法,或者说是一种编程思想。OOP有  
  三大特点,即数据封装、派生和多态。如果某种编程语言符合这  
  三种特性,就可以说它是支持OOP的。VC是完全支持OOP的。VB只  
  支持数据封装,不支持派生和继承,因此它不是完全的OOP语言。  
  虽然它号称通过多重   ActiveX   接口来支持多态,但大家都知道,  
  连派生都不支持,是不可能真正支持多态的。所以VB被称之为  
  “伪OOP语言”。很多人以为数据封装就是OOP,这是不对的。数  
  据封装只是OOP的一个特性,一些非OOP语言也支持数据封装。这一  
  点非常重要!  
  而DELPHI也支持上述三个特性,所以它也是完全支持OOP  
  的。虽然它不支持多重继承,但只能说它对OOP的支持没有C++强  
  大,不能说它对OOP的支持不完全。多重继承并不是OOP的必要特性。  
  有很多人把面向控件的编程与面向对象的编程混为一谈。  
  事实上,控件只是封装好了的数据结构,与OOP在很大程度上是两回  
  事。如上所述,VB就是面向控件的编程工具,而不是真正面向对象  
  的编程工具。VB中的类和对象,只是一些数据结构和数据结构的实例  
  化而已。因此你使用控件编程,并不等于使用OOP。一些DOS下的开发  
  工具,象BC++,完全支持OOP的三个特性,但不支持控件,你不能说  
  它不支持OOP。  
  Delphi对VB最主要的优势,就是它是完全的OOP语言。(这也  
  是我不喜欢VB而喜欢Delphi的原因之一。)这一点CJ兄说得很对,但  
  他对VB的评论小弟并不赞同,而创建一个类也并不等于就掌握了OOP。  
  那么OOP到底有什么好处?同时支持OOP的三个特性,为什么  
  就比仅仅支持数据封装要强?这话很难一下子讲清楚。事实上,很多  
  功能不用OOP一样可以完成。这主要在于编程者的思想,其实OOP本身  
  也只是一种编程思想而已,所以即使编程工具本身支持OOP,使用者  
  也完全可以编出很不OOP的程序。编程并不仅仅是写出一些代码来实  
  现某个功能,我倒觉得,很大程度在于写代码前的规划。在一个OOP  
  程序员眼中,需要处理的问题可以被分解为若干“对象”的互动,只  
  需实现这些对象的类并将其实例化,编程的任务便完成了最主要的部  
  分。这些类之间的派生继承关系可以让其实现极其复杂的现实世界的  
  抽象,再加上多态的特性,使得OOP编程更象是一种哲学思考。诚然,  
  不使用OOP而只用结构化的编程方法,也能实现之,但二者的水平相去  
  天渊。  
  这就是所谓的“不OOP”和“很OOP”之间的区别。打个不适  
  当的例子,如果要你编程去做一套家具,OOP程序员是这样做的:首先  
  实现一个“椅子”的类,再从这个“椅子”类中派生出“高背皮椅”  
  这一子类,然后调用create将其实例化(啊,这个程序员是用Delphi的  
  ;-)),再调用“摆放”方法将其放置于某一位置。以此类推,实现  
  “桌子”、“床”、“书柜”等等家具,这样就创建了一个家具世界。  
  而一个结构化程序员,走到房中,觉得需要一只椅子,他不去管“椅  
  子”或“高背皮椅”这些概念,而是立刻找来锤子、凿子等“全局函数”  
  工具,建造他心目中的某一只具体的椅子。走得两步,他觉得需要另一  
  只椅子,于是又如泡制,做成另一个椅子,既无图纸,也不知道与前一  
  只椅子有何相同及不同之处。这样下去,固然同样能做出一套家具。但  
  当家具需要加以改进,或是有某种特殊要求,又或是需要更换位置,OOP  
  程序员只需对类进行修改,或是派生一个,重载若干函数,或是重新调  
  用一次“摆放”方法即可。非OOP的程序员却只有将所有的家具都拆了,  
  重新做上一遍。  
  这样说不知说清楚了没有。其实,并非故弄玄虚,其中真意,  
  难以尽用语言表述,只有自己去亲身体会。  
  小弟对OOP的爱好,倒并非由于它在代码维护等方面的优势。我  
  是学文科出身,现在的工作与计算机也全无关系,之所以对编程痴迷,  
  完全是因为编程语言本身。在刚从C转向C++时,我被它精妙无比的结构  
  所深深震撼,不能自己。我写的东西都是凭兴趣,因此常常不惜把已经  
  实现的代码重写多遍,为的是更加“OOP”。痛快淋漓使用OOP时,已经  
  不是在编程,而是在运用自己的思想。  
  我坚持认为,OOP是划时代的伟大变革,在这个时代编程,离开  
  OOP是不可想象的。  
   
  最后还要补充一点,就是“支持面向对象编程”和“纯面向对  
  象编程”的区别。象C++、Delphi都是支持面向对象编程的语言,而Java、  
  SmallTalk等是纯面向对象编程的语言。纯面向对象编程语言的一个重要  
  特点就是,不支持全局函数,因为OOP中是没有全局函数的。对于习惯于  
  结构化编程的程序员来说,这似乎不可思议,其实很容易理解,因为在  
  现实中,你只见过“椅子”、“桌子”这一个个的“对象”以及依附于对  
  象的“方法”,从没有见过游离于对象之外的“函数”!在需要使用全局  
  函数时,应该使用类方法来代替。也就是说,在纯面向对象编程语言中,  
  是没有函数的,有的只是方法。CAkk老兄的反问:“写什么程序不需要函  
  数?”这话似乎还停留在结构化编程阶段。  
  诚然,在Windows编程中,常常需要使用WINAPI函数,而直接使  
  用这些函数是不OOP的。但按照OOP的规范,的确如此,Delphi应该直接将  
  所有的API都封装在VCL中,作为对象方法或类方法提供。当然,这不太现  
  实,也没有必要。不过在一个OOP程序员眼里,不妨将整个WINAPI看成一  
  个对象,将一个个的函数看成是它的方法,聊以自慰,呵呵。  
  Top

31 楼chenminghong(cmh)回复于 2005-05-16 11:54:19 得分 0

这些都是理论的,  
  谁能提供一下实例Top

32 楼xiaoyaozgc()回复于 2005-05-16 12:35:45 得分 1

有刘艺的<面向对象思想>这本书的电子版吗,发给我吧。很早以前就想看,可总是找不到电子版的  
  zgczgc2008@126.com  
  谢谢Top

33 楼Mrkang(谁比我菜我不愿意)回复于 2005-05-16 13:09:27 得分 1

up  
  Top

34 楼linzhengqun(风。我回来了)回复于 2005-05-16 13:48:28 得分 1

《设计模式》   《OOD启思录》《敏捷软件开发》《重构》  
   
  经典Top

35 楼chenminghong(cmh)回复于 2005-05-16 14:28:15 得分 0

有刘艺的<面向对象思想>这本书的电子版吗  
  这个好象没有Top

36 楼yeeyee(我要换工作!)回复于 2005-05-16 14:53:08 得分 2

www.2ccc.com   有框架下载。  
  搜索   【框架】   或   【Frame】  
  但是没有文档,看不懂。可以稍微研究下,理会里面的设计思想。  
  http://www.2ccc.com/search.asp?keyword=框架&keyrange=0&catalog=0&subcatalog=&pageid=1  
  http://www.2ccc.com/article.asp?articleid=2144  
   
  Simple   Application   Framework   for   VCL    
  SmallStruct   V2.2   (C/S应用框架)      
  Top

37 楼zhujainf(Z.J.F)回复于 2005-05-16 15:03:26 得分 2

面向对象的设计实用的话就写写uml吧,装个together就行了,面向对象本来就只是一种思想,解决实际问题的时候,也会遇到不如其他想法或不必面向对象的情况,所以不必强求面向对象的Top

38 楼baseyueliang(baseyueliang)回复于 2005-05-16 16:30:27 得分 2

面向对象一种是建立在公共函数上的更能实现减少重复Coding的细想,而Delphi是一直能很好体现这种思想的好工具。Top

39 楼chenminghong(cmh)回复于 2005-05-16 16:56:54 得分 0

UP一下Top

40 楼chenminghong(cmh)回复于 2005-05-17 11:02:20 得分 0

在UP一下Top

41 楼LouisCool(迷惘)回复于 2005-05-17 11:41:12 得分 1

对,《DELPHI高手突破》是本不错的书。里面的理论性很强。也有例子。不过,看了之后得好好想想。  
  我现在也是在学习面向对象的编程思想。  
  你最开始说的,每一个表是一个类,我不知道为什么?就我的理解,一个表应该是一个对象。如果要写类的话,应该是为所有的表写一个类。你用这个类创建一个对象,就是创建了一个表。  
  我也是糊里糊涂的,不是很清醒。欢迎+我QQ讨论7473174Top

42 楼baseyueliang(baseyueliang)回复于 2005-05-17 12:19:03 得分 1

当然可以为所有的表写一个类,因为所有的表都有字段列表属性,插入、更新、查询等方法。但是这只是跟业务无关的基础操作,就如同VCL的TObject,我们同样可以象TObject一样在所有表的基础类上进行继承拓展业务功能,而怎样找到继承的主线是让人头痛的一件事,业务的多样性、操作的不可预见性、流程的易改变性,都是将来导致已经设计好的继承体系的彻底崩溃的潜在可能。Top

43 楼truexf(fey)回复于 2005-05-17 16:02:46 得分 1

“而怎样找到继承的主线是让人头痛的一件事”  
  ---------------------------------------  
  顶Top

44 楼chenminghong(cmh)回复于 2005-05-19 11:14:09 得分 0

upTop

45 楼wlbfeihu(下辈子不写程序)回复于 2005-05-19 11:51:47 得分 1

《Delphi高手突破》很好  
  理论比较丰富很值一看  
  Top

46 楼sxqwhxq(步青云)回复于 2005-05-19 17:04:28 得分 1

把表当成类纯粹是为OOP而OOP,在维护和设计上根本没有简化利何工作。  
  Top

47 楼yuwenge(活得痛快)回复于 2005-05-19 17:11:32 得分 1

书我都看了,思想也理解了,但是苦于没有实践。自己写的东西还是那么垃圾。瓶井中Top

48 楼chenminghong(cmh)回复于 2005-05-19 17:38:03 得分 0

yuwenge(问个问题)   我就是跟你差不多的问题  
  就是不是要怎样实践Top

49 楼chenminghong(cmh)回复于 2005-05-21 15:08:04 得分 0

UPTop

50 楼baseyueliang(baseyueliang)回复于 2005-05-22 09:03:29 得分 2

要面向对象,并不是非要通过看书从别人那里学来。只要在平常的实践中牢记:不要ctrl   c/v,千万不要ctrl   c/v,自然而然,逐渐就会走向把代码变成自己的(写自己的函数(面向过程)--》写自己的对象模板/类(面向对象)。看了无数的书,不管是烂书,还是某某著名书,还不如自己写一句Hello   World,而不是从他光盘例子中ctrl   c/v过来运行。Top

51 楼xx_adam(一无所有)回复于 2005-05-22 11:12:53 得分 1

有些哥们对OOP理解的比较深,向你们学习。。。Top

52 楼chenminghong(cmh)回复于 2005-05-25 21:05:08 得分 0

很多地方调用应该用ctrl   c/v吧  
  最近在看李维的<面向对象实践>和刘艺的<模式>  
  但是里面都没有比较实用的例子  
  很难搞懂Top

53 楼yeeyee(我要换工作!)回复于 2005-05-26 15:18:18 得分 2

看了   Inside   VCL   吗?  
   
  结合一起看,你就会发现,  
   
  单例称模式,观查着模式,  
   
  工厂模式,门面模式。  
   
  都在   VCL   中用到了。  
   
  我还打算买到这本书    
   
  <面向对象实践>  
   
  回学校看看,看完学生生活就永远   886   。  
   
  模式也是人们实践出来的,不要刻意用。  
   
  怎样做简单,可维护性好,就怎样做。Top

54 楼chenminghong(cmh)回复于 2005-05-28 16:00:41 得分 0

upTop

55 楼chenminghong(cmh)回复于 2005-05-29 19:11:31 得分 0

upTop

相关问题

  • 面向对象设计与数据库设计 *-*
  • 请教:如何理解JS中的面向对象特征?(面向对象程序设计高手请进)
  • 采用面向对象的设计方法可行性
  • 有关面向对象的程序设计请大家讨论
  • 在PB环境下怎样面向对象设计??
  • 什么叫做面向对象程序设计?
  • 一道面向对象的设计问题!
  • 面向对象的三层应用的设计问题请教?
  • Delphi下的面向对象设计,高手请进.
  • 什么才是真正的面向对象设计方法?

关键词

  • c++
  • 面向对象
  • oop
  • 函数
  • 代码
  • 程序员
  • 数据
  • 语言
  • 框架
  • 控件

得分解答快速导航

  • 帖主:chenminghong
  • yeeyee
  • phaler
  • chijingde
  • phaler
  • phaler
  • wuqvei
  • aiirii
  • yeeyee
  • onemonth
  • julong88
  • web700
  • ihihonline
  • fj218
  • liubcb
  • g961681
  • delphfan
  • DebugXP
  • DebugXP
  • jasengod2003
  • liangyu8281
  • liangyu8281
  • xiaoyaozgc
  • Mrkang
  • linzhengqun
  • yeeyee
  • zhujainf
  • baseyueliang
  • LouisCool
  • baseyueliang
  • truexf
  • wlbfeihu
  • sxqwhxq
  • yuwenge
  • baseyueliang
  • xx_adam
  • yeeyee

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo