谈论面向对象设计 我看了刘艺的<面向对象思想>这本书.可是我还是不知道要怎样运用到数据库系统当中去.一直感觉每个表就是一个类吗?所以望高手指点. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1有空看看他那本设计模式,你会觉得写几个类,真太爽了。代码的重用,设计的重用。RAD 与 OOP 是相对立的 <设计模式>我刚买,过几天可能就到货.一定抽空看一下.我也买了李唯的那本新书,不知道怎样.我现在对面向对象还是很薄弱.我公司一个人说:窗体继承就是面向对象设计了.可是我认为.窗体继承是面向对象.可是真正面向对象应该没有那么简单吧.应该把每个业务都写成类.这样应该算面向对象吧 一个表对应一个类.那是OR/Map 面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了 窗体继承,只是用到了面向对象中的一个特性.即子类继承了父类的全部特性.以致于你在更改基类社会窗体时子类窗体都会发生变化.这也是为了好维护.具体的面向对象.因个人理解不同.设计出的结构也很大不同.MIS系统方面.有不少成熟的框架,可以借鉴一下.详细的.要看具体的业务流程了.不能一概而论吧... MIS系统方面.有不少成熟的框架,可以借鉴一下phaler(笑传醉梦):哪里有,能不能提供一下.谢谢.只是为了解决代码重用.方法维护.这样我写个公共模块,写个公共函数.不也可以吗? 买李维那本新书吧,<<面向对象实践>>虽然没多说数据库的,才也是相关的 ,<<面向对象实践>>过几天就到货了,正准备看里面不知有没有实际的例子 楼主真款,一下在买了这么多的书。羡慕ing。不过买书,我也用了 1 K 多了。Delphi 模式编程,里面的例子用得上的。 yeeyee(易 一 想找 M*M) ( ) :你都用了1K了我才用200多不过要学知识,这些钱发的值.我也是挤出来的.没有办法. 严重同意 phaler(笑传醉梦) ( ) 信誉:100 2005-5-11 17:01:04 得分: 0 一个表对应一个类.那是OR/Map 面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了 都什么时候了,delphi落伍了 都什么时候了,delphi落伍了那现在什么算没有落伍.语言每个都会落伍的就是思想不会落伍.面向对象设计方法不会落伍.所以要加快学.可是还是不明白.只有等<设计模式>和<对象实践>书到了,再学. 等待<<面向对象实践>>ing.................... 我看了李维的那本,PFM的实例,感觉还是把握不住设计需要到什么样的深度 向大家推荐一本好書,<<delphi高手突破>>感覺還不錯,著重講面向對象這部分. 所谓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看成一个对象,将一个个的函数看成是它的方法,聊以自慰,呵呵。 有刘艺的<面向对象思想>这本书的电子版吗,发给我吧。很早以前就想看,可总是找不到电子版的[email protected]谢谢 《设计模式》 《OOD启思录》《敏捷软件开发》《重构》经典 有刘艺的<面向对象思想>这本书的电子版吗这个好象没有 www.2ccc.com 有框架下载。搜索 【框架】 或 【Frame】但是没有文档,看不懂。可以稍微研究下,理会里面的设计思想。http://www.2ccc.com/search.asp?keyword=框架&keyrange=0&catalog=0&subcatalog=&pageid=1http://www.2ccc.com/article.asp?articleid=2144Simple Application Framework for VCL SmallStruct V2.2 (C/S应用框架) 面向对象的设计实用的话就写写uml吧,装个together就行了,面向对象本来就只是一种思想,解决实际问题的时候,也会遇到不如其他想法或不必面向对象的情况,所以不必强求面向对象的 面向对象一种是建立在公共函数上的更能实现减少重复Coding的细想,而Delphi是一直能很好体现这种思想的好工具。 对,《DELPHI高手突破》是本不错的书。里面的理论性很强。也有例子。不过,看了之后得好好想想。我现在也是在学习面向对象的编程思想。你最开始说的,每一个表是一个类,我不知道为什么?就我的理解,一个表应该是一个对象。如果要写类的话,应该是为所有的表写一个类。你用这个类创建一个对象,就是创建了一个表。我也是糊里糊涂的,不是很清醒。欢迎+我QQ讨论7473174 当然可以为所有的表写一个类,因为所有的表都有字段列表属性,插入、更新、查询等方法。但是这只是跟业务无关的基础操作,就如同VCL的TObject,我们同样可以象TObject一样在所有表的基础类上进行继承拓展业务功能,而怎样找到继承的主线是让人头痛的一件事,业务的多样性、操作的不可预见性、流程的易改变性,都是将来导致已经设计好的继承体系的彻底崩溃的潜在可能。 《Delphi高手突破》很好理论比较丰富很值一看 把表当成类纯粹是为OOP而OOP,在维护和设计上根本没有简化利何工作。 yuwenge(问个问题) 我就是跟你差不多的问题就是不是要怎样实践 要面向对象,并不是非要通过看书从别人那里学来。只要在平常的实践中牢记:不要ctrl c/v,千万不要ctrl c/v,自然而然,逐渐就会走向把代码变成自己的(写自己的函数(面向过程)--》写自己的对象模板/类(面向对象)。看了无数的书,不管是烂书,还是某某著名书,还不如自己写一句Hello World,而不是从他光盘例子中ctrl c/v过来运行。 有些哥们对OOP理解的比较深,向你们学习 很多地方调用应该用ctrl c/v吧最近在看李维的<面向对象实践>和刘艺的<模式>但是里面都没有比较实用的例子很难搞懂 看了 Inside VCL 吗?结合一起看,你就会发现,单例称模式,观查着模式,工厂模式,门面模式。都在 VCL 中用到了。我还打算买到这本书 <面向对象实践>回学校看看,看完学生生活就永远 886 。模式也是人们实践出来的,不要刻意用。怎样做简单,可维护性好,就怎样做。 delphi xe2 的跨平台问题。 求手写输入的思路?DELPHI能直接使用WEB上的吗? 关于在panel上画边框, 边框的宽度不一样 请问一个关于if else 语句的问题? 李维的inside VCL开始买了吗? 请问那里有对word和excel编程的源代码 如何创建一个空的WAV文件(100分)? 求教如何作一个牌类游戏 关于query定位某行后,显示在DBgrid某个位置上的问题(急急急) csdn上的高手是越來越沒有了..... BDE和SQL 连接的问题.请指点.谢了. 看好多人用Raize,不知道那里有这个控件的使用说明
我现在对面向对象还是很薄弱.
我公司一个人说:窗体继承就是面向对象设计了.可是我认为.窗体继承是面向对象.可是真正面向对象应该没有那么简单吧.应该把每个业务都写成类.这样应该算面向对象吧
面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.
平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了
虽然没多说数据库的,才也是相关的
里面不知有没有实际的例子
一下在买了这么多的书。
羡慕ing。
不过买书,我也用了 1 K 多了。Delphi 模式编程,里面的例子用得上的。
你都用了1K了
我才用200多
不过要学知识,这些钱发的值.
我也是挤出来的.没有办法.
一个表对应一个类.那是OR/Map
面向对象.只是为了解决代码重用.方法维护.具体情况具体分析,不一定全部照搬.
平时尝试着用其中的几种常用的设计模式体验一下.就有感觉了
都什么时候了,delphi落伍了
那现在什么算没有落伍.
语言每个都会落伍的
就是思想不会落伍.面向对象设计方法不会落伍.
所以要加快学.可是还是不明白.
只有等<设计模式>和<对象实践>书到了,再学.
<<delphi高手突破>>
感覺還不錯,著重講面向對象這部分.
三大特点,即数据封装、派生和多态。如果某种编程语言符合这
三种特性,就可以说它是支持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看成一
个对象,将一个个的函数看成是它的方法,聊以自慰,呵呵。
[email protected]
谢谢
这个好象没有
搜索 【框架】 或 【Frame】
但是没有文档,看不懂。可以稍微研究下,理会里面的设计思想。
http://www.2ccc.com/search.asp?keyword=框架&keyrange=0&catalog=0&subcatalog=&pageid=1
http://www.2ccc.com/article.asp?articleid=2144Simple Application Framework for VCL
SmallStruct V2.2 (C/S应用框架)
我现在也是在学习面向对象的编程思想。
你最开始说的,每一个表是一个类,我不知道为什么?就我的理解,一个表应该是一个对象。如果要写类的话,应该是为所有的表写一个类。你用这个类创建一个对象,就是创建了一个表。
我也是糊里糊涂的,不是很清醒。欢迎+我QQ讨论7473174
理论比较丰富很值一看
就是不是要怎样实践
最近在看李维的<面向对象实践>和刘艺的<模式>
但是里面都没有比较实用的例子
很难搞懂