将面向对象的思想贯穿始终

 

数据挖掘工具

(接第一篇)

数据挖掘研究院

将面向对象的思想贯穿始终,这个题目好象有些大了。我刚才在这里说的,提到的,其实只是在编码的时候,应当注意的一些小问题。所以’贯穿始终’这个用语,改为’牢记在心’可能更为贴切。

对于Delphi某些特性的一点意见: 数据挖掘交友

不知各位注意到没有,在Delphi的Form中放置的所有组件(包括控件),对于其他Form来说,都是可见的,准确地说,这些组件都是该Form的Public部分的内容。这样的结果,一方面是好的,因为其灵活性,其他类可以方便的引用Form上的这些组件,设置它们的属性,执行它们的方法,事件等等;但是另一方面它的缺陷也是显而易见的,那就是导致了Form的封装性的丧失。在我看来,放置于Form之上的这些组件,就使用者的本意而言,应当是作为该Form的私有属性而存在的,对于其他类或其他Form本应该不可见。即使需要访问它们,也应当通过由Form提供一系列的属性方法来间接的访问。

数据挖掘工具

举个例子,让大家有些感性的认识:

数据挖掘交友

procedure TForm1.Button1Click(Sender: TObject);

begin 数据挖掘实验室

  Form2.Edit1.Text := "abc"; // <-- 这个句子的写法,本人很不赞同。

数据挖掘工具

end; 数据挖掘实验室

可能很多人写这样的代码的时候脑子里还没有封装性的概念,可是你看了这篇文章,就再也不要干这样的事了(改邪归正吧你!)。在我看来TForm1就是TForm1,TForm2就是TForm2,它们都是为了实现某些特定的功能而存在的,所以它们提供给外界一些接口(一些属性,方法,还有事件,事件说严格一点,也是属性),来实现它们自己所承诺的功能。至于这些接口的具体实现,应当由它们自身来维护,外界没有必要,也没有办法插手。这个思想,对应到实际应用中,也就是Form2.Edit1是否有必要被From1直接访问的问题了。我本人比较倾向于下面的实现:

数据挖掘研究院

  //以下为Unit1中TForm1的部分内容

数据挖掘论坛

procedure TForm1.Button1Click(Sender: TObject); 数据挖掘论坛

begin 数据挖掘研究院

TForm2(FAnotherForm).EditText := "abc"; // <-- 这个实现,体现了封装的思想 数据挖掘研究院

end;

//以下为Unit2中TForm2的定义 数据挖掘交友

type 数据挖掘实验室

  TForm2 = class(TForm) 数据挖掘研究院

    Edit1: TEdit;

  private 数据挖掘研究院

    function GetEditText: string;

    procedure SetEditText(const Value: string);

数据挖掘交友

  public

数据挖掘交友

    property EditText: string read GetEditText write SetEditText; 数据挖掘研究院

   // <-- 我的推荐用法;

数据挖掘论坛

  end;

…… 数据挖掘实验室

function TForm2.GetEditText: string;

begin 数据挖掘交友

  result := Edit1.Text;

end; 数据挖掘实验室

procedure TForm2.SetEditText(const Value: string); 数据挖掘交友

begin

  if Value <> EditText then 数据挖掘实验室

    Edit1.Text := Value;

end;

数据挖掘研究院

这里的FAnotherForm是TForm1的一个私有属性,它是指向TForm2的一个实例的指针(这个用法在第一篇里做了强调)。访问TForm2的EditText 属性,而不是鲁莽的直接访问TForm2的Edit1.Text,体现了一种思想,那就是分工协作的思想,那就是独立自主的思想,也就是封装性的思想。

数据挖掘工具

(未完,待续)

更多文章 数据挖掘实验室

 

数据挖掘论坛

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:如何将界面代码和功能代码分离(基于Delphi/VCL)
下一篇:Delphi制作数据感知控件之浮想联翩
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • GDI+简介
  • COM与DCOM的区别与联系
  • 使用Delphi解析XML 文档
  • 如何设置delphi/cbuilder/BDE/MSSQL
  • BORLAND在“迫害”程序员?
  • 将image的图片保存为JPG格式图片方法
  • InstallShieldExpressfordelphi制作安装程
  • Real Programmers Use Pascal
  • 关于在COM中使用可选参数的研究
  • TStrings的AddObject方法应用
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • BORLAND在“迫害”程序员?
  • 李维:我的回忆和一些有趣的事(精彩绝伦)
  • 李维看.net和DELPHI6(含李维照片)
  • 《代码大全》电子版1.01发布了
  • Real Programmers Use Pascal
  • Kylix安装手记
  • Borland与Microsoft关于Delphi的对话
  • InstallShieldExpressfordelphi制作安装程
  • 关于在COM中使用可选参数的研究
  • msagent经典用法
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静