每本书都在吹嘘OOP,每个人都在吹嘘OOP,但在我见过的别人源码中,对于数据维护的实现基本上都是先定义一个父窗体,在其中定义一些Edit,Delete什么的方法,然后在具体的数据窗体(如雇员资料)中做相应的数据校验等逻辑处理.
看起来使用了继承,但这样就OO了吗?界面和业务根本没有分开,那些纸上谈兵的定义雇员对象的OO方法又应用在了哪里,似乎没有几个人知道.
那些自认OO方面有造诣的高手们又是如何应用的呢,给个应用实例让俺明白了重谢200分,不够再加

解决方案 »

  1.   

    你说的,还不能叫OO建议你看看 delphi 高手突破  或李维的 面向对象实践
     这两本书,那才真正用到
      

  2.   

    窗体可以看作是一个类
    将系统一些共性的操作,提取,然后装成一个基类 (在窗体的继承中指基类)逻辑判断在数据库操作中是针对TDATASET的(以TDataSet事件来触发),而不是界面,但同时为了界面的友好性也是要作一些处理的窗体继承,完全是一种面向对象的复用技术,与C#、JAVA不的只是这里将窗体文件当作一个类罢了OO的设计思想并不限于继承与重载或多态,更多的是将系统共性的东西提取或重组(有点是结构化思想了),从而与界面分离   即系统的框架设计
     例:针对TComboBox.Items的操作,你完全可以将Items当作一个TStrings类来调用操作(在Delphi中TStrings类型是以指针的方式来传递的)没有所谓的标准OO境界,就像武侠小说中的,你的功夫,在一些更高的高手眼里,或许只能算作一些小孩的儿戏,实用才是最重要的(功能实现、开发周期、性能、扩展、操作友好性各方做出权衡&取舍)----------------------------------------------------------------------------
      将一门高深的技术,以最简单最普通的形式表达出来,那才是真正的高手
      

  3.   

    为了简单而OO,不简单的话,就不OO了,keke
    写东西嘛,怎么简单怎么使
      

  4.   

    至于你看过的代码,我觉得多半是我本科做设计时候的水平,面向过程+SQL,确实不是太面向对象的.不过你学习一点点Enterprise Core Object的话,你就知道什么是OO了.或者用InstantObjects也可以.
      

  5.   

    至于你看过的代码,我觉得多半是我本科做设计时候的水平,面向过程+SQL,确实不是太面向对象的.不过你学习一点点Enterprise Core Object的话,你就知道什么是OO了.或者用InstantObjects也可以.有道理!
      

  6.   

    呵呵 OO 也只是一种方法、思想而已,也不是每个地方都需要用到的。。而且OO 使用的程度 层次 也不一定要用到最全面的。。反正是没有最好 是有最合适界面 和 逻辑 分开 这是一个基本的准则界面可以继承,逻辑也可以继承、扩充的呀一般是这样(俺这么用的)界面继承,,子界面 包含一个 逻辑处理类 所有处理转发给 逻辑处理类
    主界面尽量抽象公有操作、 自然 逻辑处理类就处理所有的业务逻辑了。
      

  7.   

    http://community.csdn.net/Expert/topic/4418/4418141.xml?temp=.1730158,大家进来看看
      

  8.   

    我的OO做法:
    1、定义一个员工类(基本上是个数据类,或是带一个logon等的方法),一个员工管理类,一般有addemp,delemp,updateemp,findempbyID的方法。
    2、按下[add]button后,进行基本的字段有效校验(是否为空),业务校验放在管理类中,通过后调用管理类的addemp(aemp: 员工类)方法。
    明白了就给分嘛
      

  9.   

    var f1 : TForm 
    begin 
     if f1 = nil then showmessage('nil') // why not show ?
     f1 = nil ;
     if f1 = nil then showmessage('nil') // showed
     
     f1.free ; // no exception , why?
    end
      

  10.   

    如果你是想定义一个灵活而广泛适应架构,那么你必须考虑使用OOP思想。 我觉得你可以看看 Delphi设计模式,应该可以很受启示。
      

  11.   


    我本来用的就是窗体继承,但虽然是窗体继承代码和界面也仍然在一起呀,举个例子,如果现在要改三层架构,那我的业务不就剥离不出来了?
    其实我的想法和beyondtkl(大龙驹<*study,think,work,gain MORE and MORE*>) 的差不我,只不过就是实际应用的时候不知如何开始
      

  12.   

    比如数据正确性的判断我都放在窗体类中了,只是一部分的功能分离了出来
    我想这是不正确的,请大龙驹能给一部分你应用的示例性代码给我学习一下好吗?谢谢了
    [email protected]
      

  13.   

    hehe 楼主对00的理解还不是很透,你可以参照一些别人的例子再理解一下,这样快些.
      

  14.   

    OOP的思想:封装,继承,多态。封装是为了实现每个对象仅完成自己的工作,和其它的对象保持非常少的耦合,这是实现代码重用,让程序有好的可维护性的最主要的一点。就楼主所描述的这样的系统可以分成三层,界面,逻辑,数据三部分。
    界面层可能访问逻辑层提供的方法,并响应逻辑层的消息,逻辑层处理界面层提交的请求,从数据层得到数据或保存数据到数据层。界而层根本不知道数据层的存在。数据层的功能:
      将表类化,根据表结构创建相应的Record 每一张表对应一个管理它的类,实现添加,修改,删除,查找的方法。逻辑层检查用户提交的数据格式,确定要返回的内容和执行的操作。界面里不会出现SQL语句,仅有调用逻辑层方法的语句和响应逻辑层的事件显示的语句。界面的继承在使用的时候真是应好好讨论一下是否有必要,最主要的是封装,哪些功能应放在一个类中实现这在很大程序上决定了程序的可重用性和可维护性。
      

  15.   

    在很多软件公司中OO思想其实并没有我们想象中那么流行。事实上真正掌握OO思想的人在中小型企业并不多。
    所以如果你想学OO的话多看一些开源的一些大项目,那些代码质量还算很高的。对于我们用的Delphi来说VCL本身就是一个很好的例子,只要能静下心来学,还是能从中学习到不少知识的。至于能不能在实际工作中用,那就要看你所在公司的水平了。
    不管怎么说静下心来多学点东西还是没错的。
    我也正在学习中,共同努力吧。====CSDN 小助手 V2.5 2005年11月05日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
    下载:http://szlawbook.com/csdnv2
      

  16.   

    JAVA的面想对象思想还是比较纯的,OBJECT PASCALL中的杂质太多。
      

  17.   

    各位OO高手在写程序的时候,定义类是从Tobject 继承 还是直接是Class 这两个有什么区别??还有, 上面的我的问题,有空解释一下, 谢谢!!
      

  18.   

    class 相当于 class(TObject)
      

  19.   

    不写默认就是指TObjct,重要的不是表现,写出来才算,而是它表示的意思。
      

  20.   

    什么是OO? OO就是一系列的STRUCT
      

  21.   

    各位OO高手在写程序的时候,定义类是从Tobject 继承 还是直接是Class 这两个有什么区别??还有, 上面的我的问题,有空解释一下, 谢谢!!------------这要看你具体的类的用途、意义了。。有的还继承 interface呢这个 要自己多看多写多思考。。例子 我以后会写一个心得体会之类的吧 现在不行 比较忙。
      

  22.   

    超级同意saoren兄的见解。
    那就是我们编程的高境界了
    另:saoren 的名字真难听。
      

  23.   

    我觉得不应该啊, 想想 VCL应该是很精简的,不会多出个不必要的或者同一个东东起两个名字吧
      

  24.   

    纯粹为了oo而oo,我们老板就回家带孩子去了!
    什么时候需要oo yeah才oo yeah 啊
      

  25.   

    窗体没什么好 O 的。你发现没有,对话框的数据收集起来就是一个对象。至于如 WORD文档窗口,对象结构比较复杂了,
      

  26.   

    我同意inshua(孟昭) ,窗体都被O好了.我看过一大虾99年开发的图形引擎,那才是真O
    脱离了应用谈O,就是闭门造车
      

  27.   

    窗体没什么好 O 的。你发现没有,对话框的数据收集起来就是一个对象。至于如 WORD文档窗口,对象结构比较复杂了,但也是对象。所以窗体呢,只是一个收集/展示用的界面。举保存数据的例子。窗体收集的信息收集为对象,我叫它 PO 映射。
    对象投到后台,由业务对象把它映射成 SQL 的 Insert 语句。 这是 OR 映射。这样就完成了一个保存的动作。
      

  28.   

    大家要纯的O,那就从源头O起,从o/r mapping开始O啊
      

  29.   

    各位Master! 各位OO高手在写程序的时候,定义类是从Tobject 继承 还是直接是Class 这两个有什么区别??
    Tobject = class ... 有这样定义的 :Txxxx = class  
     也有这样定义的: Txxxx = class(Tobject) 两个区别在那,如果一样那还要TOBJECT干吗? 或者,为什么有的直接继承自CLASS 而有的从TOBJECT来?
      

  30.   

    没有区别。默认从 TObject 派生。
      

  31.   

    写法不同,结果一样还有Txxxx = class  也可能只是下面要引用到而先定义
      

  32.   

    请各位到以下两个地址中的一个去领分,谢谢.
    没有去领的将只有将本贴的20分平分了
    http://community.csdn.net/Expert/topic/4427/4427317.xml?temp=4.484195E-02
    http://community.csdn.net/Expert/topic/4427/4427319.xml?temp=.7635462
      

  33.   

    OOP编程有时候是需要工具和语言更强制你使用OOP,比如JAVA、.NET,这样出来的OOP更面向对象,DELPHI并不是一个太强制OO性的语言,所以你有时会觉得在DLEPHI里用OOP很别扭。
      

  34.   

    弄个Form什么的,这不是OO偶不搞数据库开发的一般开发组件,有VCL,ActiveX,把常用的东西封装起来,这就是我理解的OOP
    这样就可以重用和扩展其实也没必要为OO而OO,能满足需求就行的,不必介怀究竟OO是用了还是没有用
      

  35.   

    刘艺的面向对象变成思想
    delphi 高手突破  
    ------------------------------------
    这是两本属于专业低级别的书。李维的 面向对象实践
    ------------------
    未看
    其实也没必要为OO而OO,能满足需求就行的,不必介怀究竟OO是用了还是没有用
    -------------------------------------
    及其bs这样的说法。不懂就不懂,冠冕的话少说。
      

  36.   

    建意去看看《Delphi 模式编程》...
      

  37.   

    偶还是稀饭AOP,用J2EE开发的时候用。
    用过几天spring,不过delphi就没用AOP了,还是用OOP的。
    感觉一般。
      

  38.   

    AOP,不过如此。bridge,proxy代理一下,用个observer就搞定了,有必要为了这个东西来定义新关键字吗?而且AOP带来的问题就是对象职责不清。系统大了,维护反而麻烦--你必须得对相关的处理事情都清楚才行。这个AOP远不如用c++的GP来得好。为了解决某些方面的问题,就要定义一种新关键字,这样搞,还不如就产生一大堆各不相同的定式语言,想企业开发就企业开发,想游戏开发就游戏开发,用起来还简单,那不就结了。
      

  39.   

    delphi都帮你oo好了,你只要yeah就行了
      

  40.   

    Delphi 怎么实现 AspectJ 那样的东东
      

  41.   

    你学一下J2EE,就知道什么叫OOP了,OOP的思想在J2EE中用得淋漓尽致。