本人学了delphi一年,第一次写了一个购销存的demo(delphi+sql server). delphi 是一个OOP的开发语言,但整个系统中,只是在Form中用了面向对象的继承特性:即在BaseForm, BaseEntryForm等祖先Form中写了一部分例程供后代窗体使用,以简化重复工作。并在各个form中加入非感知编辑组件、数据集组件直接处理底层数据库中数据。如:从数据集中读取数据放到编辑组件中,用sql语句把编辑组件中的数据写入底层数据库等,为了编辑客户资料,创建一个新窗体,读取数据库的单条记录放在窗体中编辑;为了输入订单,创建了新窗体读取订单内容等虽然程序可以运行,但回头想想,这就是编程吗???? 是面向对象的编程吗??? 答案肯定不是。。
只是不懂得如何设计、编写系统而已。。不懂得如何符合MVC设计原则去编写强大、稳定、可扩展性的系统因为自已未曾在软件公司工作过,不懂得如何规划系统。现在真的好困惑,希望某些朋友能给点指导性的建议或者是demo让本人走出这个困惑,重写系统,真的不胜感激!!!

解决方案 »

  1.   

    "如何规划系统"----你可以先学习用Visio做做类图,模块接口等等
      

  2.   

    to: hq111(海洋123) 
    找到这一栏刷新 | 全文检索 | 搜索 | 提问| 未解决 | 已解决 | 精华区 | FAQ | 专题 | 帮助 |点提问
      

  3.   

    复: rouqing(*冰雨&双子座奇缘*) 
    可否做个设计的sample给我?好让我不走歪路。不胜感激。。
      

  4.   

    在Delphi编程中实际上很少用到面向对象编程,因为Delphi都帮你做好了,Delphi的VCL本身就是一个非常好的面向对象编程设计。其实扩展Delphi的控件和写你自己的组件都可以用到面向对象的知识。你所说的Form开发也可以根据面向对象的知识来设计你的Form体系,但这需要你的分析、归类等能力。
    面向对象编程的优势只有在大型系统才会体现出来,在一些简单数据处理方面还不如面向过程简单。比如你获取某个用户的权限,用一组函数就可以了,但你也可以设计成一个类。   实践出真知。
      

  5.   

    复: hawksoft(明月清风)
    那你认为我现在的面向form编程处理数据库数据的方向是否正确??还是设计成面向对象编程。。做成一个个的类,然后在form中调用各类中的方法来处理数据????例如:创建如下各类
    单据号生成器: 用于生成各单据的新单据号 .
    客户类---用于与底层数据库交互,读取单条记录及所有客户列表,以及提供客户的贸易往来的询查。
    至于如何把各种贸易往来分解为对象,本人就不会了希望得到某些高人指点还有:现在做企业管理软件的软件公司是如何设计及编写系统的呢??? 是使用面向对象分析方法把各要素分类,然后再编写form实现GUI . 还是面向过程直接在form中方法处理数据库中数据呢???     
      

  6.   

    楼上说的很对,看看李维的<inside vcl>(好像是叫这个名字),定会有更加深入的理解.
      

  7.   

    用Delphi得目的就是图一个字“快”,要做一个通用的东西实际上很困难。你所做的Form编程,具体得我不知道,不好评价,有这个意思吧。其实具体怎么做要根据实际需求来确定,比如对于一些管理系统,大部分的操作都是单据、常量字典的维护以及查询。其中单据的数据结构具有很多共性,操作及流程都差不多,当然可以构造如下单据操作Form提系
                TBill (至少具有添加,修改,删除等共同的操作,单据状态,单据名称等共同属性..)
    TSingleBill   TMasterDetailBill
    再下面是具体的单据。
    上面说的仅仅是举个例子,具体的做要看你分析的程度。
      

  8.   

    例如:创建如下各类
    单据号生成器: 用于生成各单据的新单据号 .
    客户类---用于与底层数据库交互,读取单条记录及所有客户列表,以及提供客户的贸易往来的询查。
    至于如何把各种贸易往来分解为对象,本人就不会了TDBObject = class(TObject)
    public:
       procedure Save();
       procedure Delet();
    end;TDBIO = class(TObject)
    public:
       procedure Load();
    end;TObjectFactory = class(TObject)
    public:
       function CreateObject():TDBObject;
       function CreateDBIO():TDBIO;
    end;TBillCreator = class(TObject)
    public:
       constructor TBillCreator(TObjectFactory of);
       destructor  Free();
       function NewBill():TDBObject;
       procedure SaveBill(TDBObject obj);
       procedure DeleteBill(TDBObject obj);
    end;TClient = class (TObject)
    public:
       constructor TClientCreator(TObjectFactory of);
       void LinkToBillObject();
       // functions 
    end;搞定,收工
      

  9.   

    复: hawksoft(明月清风) 
    你上面说的:
                      Tbill (add,modify,delelete,check,load,save...)
      TsingleBill            TMasterDetailBill
    是使用了delphi的继承属性,来减小重复的代码。。我的意思是: 到底是直接在各个Bill中的add,modify,save,check.load等方法,通过数据集组件Tquery,TStoresproc等直接与底层数据库交互数据; 还是先写一些类,把系统的各要素及业务逻辑封装起来,各个Bill的中方法再通过访问这些类中属性、方法与数据库交互??书店上许多关于数据库开发书上例子都是取用第一种方案写的,是使用面向对象语言+面向过程编程思想写出来的,我想真正的面向对象编程应该不是哪个简单。。
    现在的软件公司或者有自已开发团体的企业,到底是取用哪种方案写系统的呢???有没有在软件公司工作过的朋友能提小弟一把,好让小弟继续上路。谢谢。
      

  10.   

    书店上许多关于数据库开发书上例子都是取用第一种方案写的,是使用面向对象语言+面向过程编程思想写出来的,我想真正的面向对象编程应该不是哪个简单。。//
    搂主可以把整个软件分层,比如三层(界面,业务逻辑,数据访问):
    1,界面:主要是和用户交互,不涉及具体的业务逻辑,界面调用业务逻辑层操作实际的业务;
    2,业务逻辑:可以用MIDAS或COM(COM+)等实现,比如商品购进等的处理,凡涉及到数据库处理的
    地方都调用数据访问层实现对数据库的操作。
    3,数据访问:也可以可以用MIDAS或COM(COM+)等实现,除了数据库访问的基本功能外,
    还要处理诸如数据库的移植(从MySQL到OROCAL)、表字段的增删不能影响到业务逻辑层以及事物处
    理等等。
      

  11.   

    3,数据访问:也可以用MIDAS或COM(COM+)等实现,除了数据库访问的基本功能外,
    还要处理诸如数据库的移植(从MySQL到Oracle)、表字段的增删不能影响到业务逻辑层以及事物处
    理等等。
      

  12.   

    复:qiume(杜克[在Coder和Designer之间徘徊]) 现在是使用BDE,计划在3月分后学习分布式业务处理,dbexpresss访问机制本人在软件分层及实现这方面绝对是个门外汉,可否送个demo给我,让我继续上路。先谢了
      

  13.   

    回复人: dickman(我为window狂) ( ) 信誉:90  2005-01-08 09:46:00  得分: 0  
     
     
       复:qiume(杜克[在Coder和Designer之间徘徊]) 现在是使用BDE,计划在3月分后学习分布式业务处理,dbexpresss访问机制本人在软件分层及实现这方面绝对是个门外汉,可否送个demo给我,让我继续上路。先谢了
      
     
    // 
    数据库访问用BDE、ADO、或dbexpresss与软件分层没有关系,因为与数据库打交道的只有数据
    访问层;软件Demo都属于公司,不属于个人。
      

  14.   

    复:qiume(杜克[在Coder和Designer之间徘徊]) 
    可不做个简单的不属于公司的demo给我? ^_^有没这方面实战的书介绍?
      

  15.   

    书店上许多关于数据库开发书上例子都是取用第一种方案写的,是使用面向对象语言+面向过程编程思想写出来的,我想真正的面向对象编程应该不是哪个简单。。//
    1.面向对象编程思想和面向过程编程思想这两种思想不是对立的.
    2.Delphi只是为了加快程序员的开发进度,很多东西都帮你做了,你做的工作很简单,但就不能说你进行的编程就是"使用面向对象语言+面向过程编程思想写出来的".
    3.Delphi的VCL本身就体现了面向对象编程的精髓.
    4.我的意思是: 到底是直接在各个Bill中的add,modify,save,check.load等方法,通过数据集组件Tquery,TStoresproc等直接与底层数据库交互数据; 还是先写一些类,把系统的各要素及业务逻辑封装起来,各个Bill的中方法再通过访问这些类中属性、方法与数据库交互??
    呵呵,建议采用前者.任何东西的使用都是有个度的,太过了,就迂腐了.
      

  16.   

    回复人: dickman(我为window狂) ( ) 信誉:90  2005-01-08 10:50:00  得分: 0  
     
     
       复:qiume(杜克[在Coder和Designer之间徘徊]) 
    可不做个简单的不属于公司的demo给我? ^_^有没这方面实战的书介绍?
      
    //
    最近比较忙,推荐你看Java和.NET的例子,网上多的很。